专利摘要:
ビデオデコーダが、ビデオデータユニットの破損データセグメント内のエラーを検出し、隠蔽するために、連続エラー処理プロセスを実行する。デコーダはカレントデータユニットを連続的に復号する。エラーを検出すると、デコーダはエラーフラグを設定し、次のユニットの開始時に復号を再同期させる。エラーフラグが設定されている場合、ビデオデコーダは、その後のユニットの開始に基づいて破損データセグメントの終了を識別する。デコーダは、カレントユニットの開始と破損データセグメントの終了との間のデータを隠蔽する。エラーフラグが設定されていない場合、デコーダは、カレントユニットの残りを復号し、カレントユニットに対してエラー処理及び隠蔽を実行することなしに次の利用可能なユニットを復号することに進む。デコーダはまた、損失したビデオデータユニットによって引き起こされた参照ユニット不整合に対処することができる。
公开号:JP2011514076A
申请号:JP2010548816
申请日:2009-02-24
公开日:2011-04-28
发明作者:ダイ、ミン;テン、チア−ユアン;リー、イエン−チ
申请人:クゥアルコム・インコーポレイテッドQualcomm Incorporated;
IPC主号:H04N7-26
专利说明:

[0001] 本開示は、デジタルビデオ復号に関し、より詳細には、ビデオ復号エラーを処理するための技法に関する。]
背景技術

[0002] デジタルビデオデータを符号化及び復号するために、幾つかのビデオ符号化及び復号技法が開発されてきた。例えば、Moving Picture Experts Group(MPEG)は、MPEG−1、MPEG−2、及びMPEG−4を含む幾つかの技法を開発した。他の例には、International Telecommunication Union(ITU)-T H.263規格、並びにITU−T H.264規格及びその相対物、ISO/IECMPEG−4、Part10、即ち、Advanced Video Coding(AVC)がある。これらのビデオ規格は、データ量を低減するために圧縮された形でデータを符号化することによって、ビデオデータの効率的な送信及び記憶をサポートする。]
[0003] 情報源は、上記のビデオ符号化技法の1つを採用して、デジタルビデオデータを符号化することができる。情報源は、符号化ビデオデータをアーカイブし、及び/又は符号化ビデオデータを送信チャネルによって宛先装置に送信する。宛先装置は、符号化ビデオデータを受信し、受信したビデオデータを復号して、再生のために元のデジタルビデオデータを復元する。ビデオデータは、エラーを起こしやすいチャネル上での送信中に損失又は破損し、復号エラーを生じることがある。ビデオブロードキャスト及びビデオ電話など、様々な適用例にとってエラーロバストネスは重要である。]
[0004] ビデオデコーダは、安定したビデオ復号をサポートするために、受信したビットストリーム中のエラーを検出しなければならない。更に、ビデオデコーダはまた、品質へのエラーの影響を低減するために、エラー処理を実行しなければならない。復号エラーが検出されたとき、ビデオデコーダは、復号同期が回復できるまで、破損したデータを隠蔽することができる。適切なエラー処理を行わないと、デコーダが正しいデータを破棄するか、又は信頼できない再構成されたデータを表示することがあり、それらの各々は視覚的品質を劣化させる可能性がある。しかしながら、エラー処理は、計算集約的であり、特にハードウェアで実装されたとき、過大な電力を消費する可能性がある。]
[0005] 本出願は、その内容全体が参照により本明細書に組み込まれる、2008年2月26日に出願された米国仮出願第61/031,438号の利益を主張する。]
[0006] 本開示は、デジタル符号化ビデオデータを復号するときに発生する復号エラーを効率的に処理するための技法に関する。ビデオデータは、フレーム又はスライスなど、ビデオデータユニットに編成できる。ビデオデータユニットは可変サイズを有し、マクロブロック又はより小さいブロックなど、ビデオブロックを含むことができる。ビデオデコーダは、1つ又は複数のビデオデータユニットの破損データセグメント内のエラーを検出し、隠蔽するために、連続エラー処理プロセスを実行することができる。]
[0007] デコーダは、フレーム又はスライスなど、カレントビデオデータユニットをビデオデータユニットの開始から連続的に復号する。カレントビデオデータユニット中のエラーを検出すると、デコーダは、エラーフラグを設定し、ビットストリーム中の次の利用可能なビデオデータユニットの開始時に復号を再同期させることができる。エラーフラグは、カレントデータユニット中の復号データの少なくとも一部が復号エラーを生じ、破損していることを示す。エラーフラグが設定されている場合、ビデオデコーダは、その後のビデオデータユニットの開始に基づいて破損データセグメントの終了を識別する。]
[0008] デコーダは、カレントビデオデータユニットの開始と破損データセグメントの終了との間のデータを隠蔽する。このようにして、デコーダは、正しいデータの損失及び誤ったデータの表示を回避することができる。エラーフラグが設定されておらず、エラーがないことを示す場合、デコーダは、カレントビデオデータユニットの残りを復号し、カレントビデオデータユニットのためのエラー処理及び隠蔽を実行することなしに次の利用可能なビデオデータユニットを復号することに進むことができる。デコーダはまた、損失したビデオフレームなど、損失したビデオデータユニットによって引き起こされた参照ユニット不整合に対処することができる。]
[0009] 一態様では、本開示は、符号化ビデオデータのカレントユニットの開始を決定することと、カレントユニットの少なくとも一部分を復号することと、カレントユニット中の復号エラーを検出することと、復号エラーが検出された場合、符号化ビデオデータの次の利用可能なユニットの開始を決定することと、次の利用可能なユニットの開始に基づいて破損データセグメントの終了を判断することと、カレントユニットの開始と破損データセグメントの終了とに基づいて破損データセグメントを隠蔽することとを備えるビデオ復号方法を提供する。]
[0010] 別の態様では、本開示は、符号化ビデオデータのカレントユニットの少なくとも一部分を復号する復号エンジンと、カレントユニット中の復号エラーを検出するエラー検出モジュールと、カレントユニットの開始を決定し、復号エラーが検出された場合、符号化ビデオデータの次の利用可能なユニットの開始を決定し、次の利用可能なユニットの開始に基づいて破損データセグメントの終了を決定するエラーマッピングモジュールと、カレントユニットの開始と破損データセグメントの終了とに基づいて破損データセグメントを隠蔽するエラー隠蔽モジュールとを備えるビデオ復号デバイスを提供する。]
[0011] 追加の態様では、本開示は、符号化ビデオデータのカレントユニットの開始を決定することと、カレントユニットの少なくとも一部分を復号することと、カレントユニット中の復号エラーを検出することと、復号エラーが検出された場合、符号化ビデオデータの次の利用可能なユニットの開始を決定することと、次の利用可能なユニットの開始に基づいて破損データセグメントの終了を決定することと、カレントユニットの開始と破損データセグメントの終了とに基づいて破損データセグメントを隠蔽することとを、1つ又は複数のプロセッサに行わせる命令を備えるコンピュータ可読媒体を提供する。]
[0012] 本開示の1つ又は複数の態様の詳細について添付の図面及び以下の説明において述べる。本開示の他の特徴、目的、及び利点は、説明及び図面、並びに特許請求の範囲から明らかになろう。]
図面の簡単な説明

[0013] 本開示で説明するエラー処理及び隠蔽技法を実行するビデオ符号化及び復号システムを示すブロック図。
本開示で説明するエラー処理及び隠蔽技法を実行するビデオデコーダの一例を示すブロック図。
例示的なエラー処理及び隠蔽モジュールを示すブロック図。
連続エラー処理及び隠蔽技法を実行する際のビデオデコーダの例示的な動作を示すフローチャート。
フレーム内の復号エラーのためのエラー処理及び隠蔽を実行する際のビデオデコーダの例示的な動作を示すフローチャート。
フレーム内に復号エラーを備える例示的なビットストリームへのエラー処理及び隠蔽技法の適用を示す図。
2つ以上のフレームにわたる復号エラーのためのエラー処理及び隠蔽を実行する際のビデオデコーダの例示的な動作を示すフローチャート。
2つ以上のフレームにわたるエラーを含んでいる例示的なビットストリームへのエラー処理及び隠蔽技法の適用を示す図。
複数参照フレームを可能にするビットストリームに対するエラー処理及び隠蔽技法の適用を示す図。
複数参照フレームを可能にするビットストリームに対するエラー処理及び隠蔽技法の適用を示す図。
複数参照フレームを可能にするビットストリームに対するエラー処理及び隠蔽技法の適用を示す図。
複数参照フレームを可能にするビットストリーム中の損失したフレームに対してエラー処理及び隠蔽を実行する際のビデオデコーダの例示的な動作を示すフローチャート。
複数参照フレームを可能にする例示的なビットストリームへのエラー処理及び隠蔽技法の適用を示す図。
複数参照フレームを可能にする例示的なビットストリームへのエラー処理及び隠蔽技法の適用を示す図。]
実施例

[0014] 本開示は、ビデオデータを復号するときに発生する復号エラーを効率的に処理するための連続エラー処理技法を対象とする。連続エラー処理技法は、エラー隠蔽をサポートするが、隠蔽すべきデータを識別するためのルックアヘッド(先読み)動作を必要としない。本開示の幾つかの態様では、連続エラー処理技法は、特にモバイルデバイスなどの組込みシステム中に実装されたときに、実装の複雑さを低減し、デコーダにおけるバッファサイズ要件を低減し、効率的な電力消費を促進することができる。更に、幾つかの態様では、連続エラー処理技法は、ビデオの視覚的品質を維持するか、又は向上させることに有効である。]
[0015] エラー処理では、復号エラーの影響を抑制するために、ビデオ復号エラーが検出されたとき、隠蔽すべきビデオデータを識別する。例えば、ビデオデコーダは、1つ以上のフレーム又はスライスなど、1つ以上のビデオデータユニット内でマクロブロック(MB)などのビデオデータを隠蔽する。例示のために、本開示は、一般にビデオスライスの形態のビデオユニット及びMBの形態のブロックを参照する。しかしながら、本開示は、他のタイプのビデオデータユニット及びブロックに容易に適用可能である。ビデオシーケンスは複数のビデオフレームを含む。各フレームは複数のビデオスライスを含むことができる。各ビデオスライスは、復号プロセスの再同期を可能にする再同期コードワードをもつスライスヘッダを含むことができる。]
[0016] エラー隠蔽では、ビデオスライス内のブロックの代わりに他のデータを代入する。様々な隠蔽技法のいずれも使用できる。一般に、ビデオデコーダは、データを別のビデオデータユニットからの同様のデータと交換することによって、破損データを隠蔽することができる。一例として、ビデオデコーダは、スライス中のMBを異なるフレーム中のスライスからの他のMBと交換することによって、そのMBを隠蔽することができる。特に、1つのスライス中のMBは、ビデオシーケンス中で時間的な隣接フレーム中の対応するスライスから空間的に同一位置にあるMBによって交換できる。]
[0017] 本開示では、一般に、許容できる視覚的品質を与えながら、単純で電力効率のよい連続エラー処理技法について説明する。エラー処理は、エラー隠蔽は一般に隠蔽すべきMBの番号についての知識を必要とし、エラー処理はそのような情報を与える、という点でエラー隠蔽とは異なる。この情報はエラー範囲と呼ばれる。開示するエラー処理技法とともに使用される特定のエラー隠蔽技法は変更できる。しかしながら、連続エラー処理技法によって生成されるエラー範囲に関して、エラー隠蔽について説明する。]
[0018] 動作中、ビデオデコーダは、復号エラーの正確な位置を知ることができず、復号エラーを即時に検出することができない。従って、2つのスライスヘッダ間に存在するMBは、確実に復号されないことがある。視覚的に混乱させる可能性がある、間違って復号されたMBの提示を回避するために、ビデオデコーダは、復号エラーが検出されたときに2つのスライスヘッダ間のすべてのMBを隠蔽するように設計される。このようにして、ビデオデコーダは、場合によっては破損MBをすべて隠蔽することができる。スライスヘッダは、エラーが1つのスライス内にある場合は連続しているか、又は、エラーが複数のスライスにわたる場合は連続していない。]
[0019] どのMBを、またどれだけ多くのMBを隠蔽すべきかを判断するために、デコーダのエラー処理動作は、復号エラーが検出されたカレントスライスの開始と、後のスライスの次の再同期コードワード又はフレームの終了のいずれかとの間にわたるすべてのMBを、ビットストリーム中で次に続くものはどれでも、判断する。言い換えれば、エラー処理動作は、カレントスライス中の最初のMBと、次のスライス又はビデオフレームの終了のいずれかの直前の最後のMBとを識別する。次いで、この情報はエラー隠蔽動作に移動される。]
[0020] フレーム中のMBは番号付けされる。最後のMBは、次のスライスの最初のMBの直前に発生する。スライスなどのビデオユニットのサイズは可変であるので、後のスライス中の最初のMBの番号は容易に知られない。後のスライス中の最初のMBを識別するための1つの手法は、ビットストリーム中でルックアヘッドを行い、カレントスライスの復号を完了する前に、次のスライスヘッダに関連する再同期コードワードを探索することである。次のスライスヘッダをプリデコードし、再同期コードワードを識別することによって、ルックアヘッド動作が次のスライスの最初のMB、従って先行するスライスの最後のMBを決定することができる。このようにして、エラーが検出された場合、最初のMBと最後のMBが利用可能である。最初のMBと最後のMBは、隠蔽のためのデータセグメントを定義する。データセグメントは、1つのスライス又は複数のスライスを含むことができる。]
[0021] フレームが幾つかのスライスに分割されているとき、デコーダは通常、一度に1つのフレームではなく、一度に1つのスライスを復号する。理想的には、デコーダは、カレントスライスに対して復号する必要があるMBの番号を決定するために、次のスライスヘッダを探すためのルックアヘッド動作を適用することができる。復号中にエラーが発見されたとき、エラーハンドラがエラー隠蔽のためにこれらの番号を与えることができるように、デコーダは、破損データセグメントの最初のMBと最後のMBを知る必要がある。このようにして、デコーダは、破損データセグメント内のMBのみを隠蔽し、次のスライスヘッダから復号を再開する。スライス構造の助けをかりて、デコーダは、フレーム全体を損失する代わりに、より多くのMBを再構成することができる。]
[0022] ルックアヘッド手法は、幾つかのソフトウェアベースのデコーダ実装形態では効果的であるが、組込みハードウェアデコーダアーキテクチャに対して大いに望ましくないことがある。多くの場合、ルックアヘッド動作が実質的にハードウェアの複雑さを増大させ、プロセッサ間でより多くの計算と中断とを必要とし、電力効率を劣化させることがある。更に、復号プロセスが、次のスライスに対するルックアヘッドの後、カレントスライスに戻ることができるように、ルックアヘッド動作は過大なバッファリングを必要とすることがある。ルックアヘッド動作は、カレントスライスが復号される前に行われ、従って、復号エラーが検出されたか否かにかかわらず、実行される。従って、各スライスをバッファし、次いで復号しなければならない。ビットストリームがエラーを含んでいない場合でも、このルックアヘッド動作はビットストリーム中の全てのスライスに対して適用され、大部分のスライスに対して浪費される複雑な計算が必要になる。]
[0023] 本開示で説明する連続エラー処理プロセスによれば、ビデオデコーダは、後のスライスの開始を識別するためのルックアヘッドを行う必要がない。代わりに、ビデオデコーダは、後のスライスに進む前に、エラーが検出されるまで、カレントスライスを連続的に復号する。復号の前にビットストリーム中でルックアヘッドを行うのではなく、ビデオデコーダは、エラーが検出されなかった場合、最初に後のスライスの開始を識別することなく、カレントスライス全体を復号することができる。]
[0024] このようにして、復号される次のスライスのスライスヘッダが得られるまで、ビデオデコーダはエラー隠蔽動作を延期することができる。デコーダは、カレントスライスを復号するより前に破損データの最後のMB番号を知る必要はないが、そのスライス中で復号エラーが発生したかどうかを示すエラーフラグを維持する。従って、実際には、デコーダは、カレントスライスがエラーを含んでいないと最初に仮定することができる。カレントスライスがエラーを有する場合、デコーダに関連するエラーハンドラは、次のスライスヘッダが復号された後、そのエラーを後で処理することができる。この概念は、あらゆるスライスがエラーを有すると仮定するのであろう典型的なルックアヘッド手法とは逆である。]
[0025] 本開示による連続エラー処理プロセスでは、カレントスライスの復号中にエラーを検出すると、ビデオデコーダは、エラーフラグを設定し、例えば、後のビデオスライスの開始において再同期コードワードを探し、識別することによって、後のビデオスライスの開始において復号同期を復旧する。後のスライスは、カレントスライスのすぐ後に続くまさにその次のスライスとすることができる。代替的に、復号エラーが、複数のビデオスライス、又は複数のスライスの部分の損失又は破損を生じた場合、後のスライスは、カレントスライスに続くまさにその次のスライスとすることはできない。幾つかの例では、次の利用可能なスライスは、復号されているカレントスライスと同じフレーム中に存在することさえない。]
[0026] カレントビデオユニットを復号するか、又は復号エラーを検出すると、ビデオデコーダは、次の利用可能な、即ち、後のスライスに進む。エラーフラグが設定され、エラーが検出されたことがわかった場合、デコーダは、後のスライスの開始に基づいて破損データセグメントの終了を判断する。ただ1つのスライスが破損していた場合でも、破損データセグメントの終了はカレントスライスの終了に対応することがある。代替的に、2つ以上のビデオスライスが破損していた場合、破損データセグメントの終了は後のビデオスライスの終了に対応することがある。]
[0027] カレントビデオスライスの開始と破損データセグメントの終了とを識別するためにエラー処理を実行すると、ビデオデコーダはエラー隠蔽を実行することができる。例えば、ビデオデコーダは、カレントスライスの開始と破損データセグメントの終了との間のデータを隠蔽する。破損データセグメントは、次の利用可能なスライスヘッダの直前に終了する。破損データを隠蔽することによって、ビデオデコーダは、正しいデータの損失及び/又は誤ったデータの表示を回避することができる。エラーフラグが設定されず、カレントスライス中でエラーが検出されなかったことがわかった場合、ビデオデコーダは単に、カレントスライスに対してエラー隠蔽を実行することなく、次の利用可能なビデオスライスを復号することに進むことができる。]
[0028] 連続エラー処理技法は、本開示の様々な態様によれば、ルックアヘッド動作の必要なしに、復号及びエラー処理をサポートすることができる。ルックアヘッド動作をなくすことにより連続エラー処理が可能になり、バッファスペース、計算及び電力リソースが少なくて済む。例えば、ビットストリームを、ルックアヘッドのための第1のパスと、後続の復号のための後続の第2のパスとをサポートするためにバッファするのではなく、連続的に復号することができる。]
[0029] 一般に、ルックアヘッド動作は、復号エラーがビデオシーケンス中に実際に存在するか否かにかかわらず、エラー処理動作の一部として潜在的な復号エラーの範囲を識別しようと試みる。連続エラー処理技法は、ビデオデータユニットを連続的に復号し、復号エラーが検出された場合、エラー処理を起動する。エラーが検出されなかった場合、ビデオ復号は、エラー処理及びエラー隠蔽を行わずに進み、従って、より効率的な復号プロセスをサポートすることができる。]
[0030] 図1は、本開示で説明するエラー処理及び隠蔽技法を実行するビデオ符号化及び復号システムを示すブロック図である。図1に示すように、システム10は、通信チャネル16を介して符号化ビデオデータを宛先装置14に送信する情報源12を含む。通信チャネル16は、無線周波数(RF)スペクトル又は1つ以上の物理的伝送線路など、ワイヤレス又は有線の任意の通信媒体、又はワイヤレス及び有線の媒体の任意の組合せを備えることができる。通信チャネル16は、ローカルエリアネットワーク、ワイドエリアネットワーク、又はインターネットなどのグローバルネットワークなど、パケットベースのネットワークの一部を形成することができる。通信チャネル16は、一般に符号化ビデオデータを情報源12から宛先装置14に送信するのに好適な任意の通信媒体、又は様々な通信媒体の集合体を表す。] 図1
[0031] 情報源12は、宛先装置14に送信するためのコード化ビデオデータを生成する。情報源12は、ビデオソース18とビデオエンコーダ20と送信機22とを含むことができる。情報源12のビデオソース18は、ビデオカメラ、予め獲得されたビデオを含んでいるビデオアーカイブ、又はビデオコンテンツプロバイダからのビデオフィードなど、ビデオ獲得装置を含むことができる。更なる代替として、ビデオソース18はソースビデオとしてのコンピュータグラフィックベースのデータ、又はライブビデオ又はアーカイブされたビデオとコンピュータ生成ビデオとの組合せを生成することができる。場合によっては、ビデオ源18がビデオカメラである場合、情報源12は、いわゆるカメラ付き携帯電話又はビデオ電話、又は、携帯電話又は他の装置を含む任意の他のタイプのカメラ付きコンピューティング又は通信装置を形成することができる。他の態様では、ビデオ源18は、情報源12に結合又は統合される。各場合において、獲得されたビデオ、事前獲得されたビデオ、及び/又はコンピュータ生成ビデオは、送信機22と通信チャネル16とを介して情報源12から宛先装置14に送信するために、ビデオエンコーダ20によって符号化される。]
[0032] ビデオエンコーダ20はビデオ源18からビデオデータを受信する。ビデオ源18から受信したビデオデータは、ビデオフレームなどの一連のビデオデータユニットを備えるビデオシーケンスで構成される。フレームの一部又は全部は、ビデオスライスなどのより小さいビデオデータユニットに分割される。ビデオエンコーダ20は、ビデオデータを符号化するために、個々のビデオフレーム又はスライス内にピクセルのブロック(本明細書ではビデオブロックと呼ぶ)に対して動作することができる。フレーム又はスライスは、複数のビデオブロックを含んでいることができる。ビデオブロックは、サイズを固定することも変更することもでき、指定の符号化規格に応じてサイズが異なることがある。一般にマクロブロック(MB)と呼ばれる16×16ピクセルビデオブロックをサブブロックに構成することができる。]
[0033] 一例として、International Telecommunication Union Standardization Sector(ITU-T)H.264/MPEG-4、Part10、Advanced Video Coding(AVC)(以下「H.264/MPEG−4 AVC」規格)は、ルーマコンポーネント(luma components)では16×16、8×8又は4×4、及びクロマコンポーネントでは8×8など、様々なブロックサイズのイントラ予測、並びにルーマコンポーネントでは16×16、16×8、8×16、8×8、8×4、4×8及び4×4、並びにクロマコンポーネントでは対応するスケーリングされたサイズなど、様々なブロックサイズのインター予測をサポートする。一般に、MB及び様々なサブブロックをビデオブロックであると考えることができる。従って、MBはビデオブロックであると考えられ、区分又は下位区分された場合、MBは、それ自体がビデオブロックのセットを定義すると考えることができる。幾つかの態様では、エラー処理技法は、スライス又はフレーム内のMB番号に基づいてエラー隠蔽を指示することができる。しかしながら、他の態様では、エラー処理技法は、より大きい又はより小さいビデオブロックサイズを処理することができる。]
[0034] ビデオフレーム又はビデオスライスなどの様々なビデオデータユニットに対する技法について本開示で説明するが、本技法は、ビデオデータの任意の符号化及び復号に等しく適用可能である。更に、H.264/MPEG−4 AVC規格に従って符号化及び復号されるビデオデータに関する技法について本開示で説明する。ただし、例示のためにこの規格に関する技法について説明する。MPEG−1、MPEG−2及びMPEG−4におけるMoving Picture Experts Group(MPEG)によって定義された規格、ITU−T H.263規格、Society of Motion Picture and Television Engineers(SMPTE)421Mビデオコーデック規格(一般に「VC−1」と呼ばれる)、中国のAudio Video Coding Standard Workgroup(一般に「AVC」と呼ばれる)によって定義された規格、及びある規格団体によって定義されるか、又はプロプライエタリ規格としてある組織によって開発された任意の他のビデオ符号化規格など、様々な他のビデオ符号化規格のいずれかにそのような技法を容易に適用することができる。]
[0035] 例示のために、限定なしに、連続エラー処理の適用について、H.264/MPEG−4 AVC符号化に関して説明する。ビデオエンコーダ20は、例えば、H.264/MPEG−4 AVC規格に記載されているように、イントラ符号化及びインター符号化予測方式に従って、各ブロック(例えば、マクロブロック(MB))を符号化することができる。ビデオブロックのイントラ又はインターベースの予測の後に、ビデオエンコーダ20は、上記のH.264/MPEG−4 AVC規格に従って、ビデオブロックに対して幾つかの他の動作を実行することができる。これらの追加の動作は、変換係数を生成するための(H.264/AVC又は離散コサイン変換DCT中に使用される4×4又は8×8整数変換などの)変換動作、量子化動作及びエントロピー符号化動作を含むことができる。符号化データは符号化ビデオデータビットストリームの一部を形成することができる。符号化フレームは1つ以上のスライスを含んでいることができる。各スライスは、復号プロセスを同期及び/又は再同期させるための1つ以上のコードワードを含むことができる、Network Abstraction Layer(NAL)ユニットヘッダなどのヘッダによって指定できる。各スライスは、MB及びより小さいブロックなど、1つ以上のブロックを含むことができる。]
[0036] スライスは、多種多様なパターンに従って選択されるブロックを含むことができる。例えば、スライスは、フレームの所与の数の行に連続的に構成されたブロックを含むことができる。スライスは、代替的に、一行に連続的に構成された幾つかのブロックを含むことができ、そこで、スライスは、あるランレングスの連続的な行順序付きブロックを定義することによって、ビデオデータに適合することができる。別の例として、スライスは、フレームの所与の数の列に構成されたブロック、又はあるランレングスの連続的に構成された列順序付きブロックを含むことができる。従って、スライスは、固定数又は不変数などの任意の数のブロックを含むことができるが、異なるビデオデータを収容するように適合するために、後続又は前のスライスよりも多い又は少ないブロックを含むことができる。]
[0037] スライスを符号化した後、ビデオエンコーダ20は、フレームの各スライスを、H.264/MPEG−4 AVC規格によって定義されたネットワークアブストラクションレイヤ(NAL)ユニットなどのユニットとして指定し、上述のように、各ユニットの開始を示すために、対応するスライス又はH.264/MPEG−4 AVCによって定義されたNALユニットヘッダなどの再同期ヘッダを用いて各スライスを符号化することができる。このようにしてビデオデータを符号化することは、頻繁な再同期のための機会を与え、それにより、送信中に損失又は破損したビデオデータの影響を実質的に低減し、損失したビデオデータから生じるエラーの伝搬を低減することによって、復号を改善することができる。]
[0038] 例えば、フレームをスライスに分割することによって、スライス又はその一部分を、チャネル16を介した送信のために単一のパケット内で符号化することができる。そのスライスがチャネル16を介した送信中に損失又は破損した場合、フレーム全体がパケット中で符号化された場合に必要になるような、フレーム全体を交換、再構成又は隠蔽する必要なしに、そのスライスを再構成又は交換することができる。その上、復号が過去のデータ、場合によっては破損したデータにもはや依拠しないように、各再同期ヘッダを使用して復号プロセスを再始動することができるので、スライス又は再同期ヘッダはエラーの伝搬をなくすことができる。従って、情報源12は、送信機22を介して符号化ビデオデータを複数のパケットとして宛先装置14に送信することができ、各パケットは、エラーを復号する効率的な処理をサポートするために、別個のスライスを符号化することができる。]
[0039] 受信機24は、チャネル16を介して情報源12から符号化ビデオデータを受信する。宛先装置14は、受信機24と、ビデオデコーダ26と、ディスプレイデバイス28とを含むことができる。ビデオデコーダ26は、符号化ビデオデータを復号して、表示装置28上で再生するために元のビデオデータを得ることができる。表示装置28は、陰極線管(CRT)、液晶表示器(LCD)、プラズマ表示器、発光ダイオード(LED)表示器、有機LED表示器、又は別のタイプの表示器など、様々な表示装置のいずれかを備えることができる。]
[0040] 上述のように、チャネル16を介した符号化ビデオデータの送信中に、符号化ビデオデータの様々なスライス又はMBは、例えば、干渉、輻輳、又はチャネル16に沿って信号伝搬に影響を及ぼす他の異常により損失又は破損することがある。ワイヤレス適用例の場合、損失又は破損したビデオデータは、エラーを起こしやすいネットワークを介したワイヤレス送信により起こることがある。復号エラーは、ビデオブロードキャスト又はビデオ電話などの様々な適用例に悪影響を及ぼすことがある。受信機24は、損失又は破損したビデオデータを含むことがある符号化ビデオデータを受信する。ビデオデコーダ26は、一部のフレーム又はスライス、若しくは複数のフレーム又はスライスにわたるこれらの損失又は破損したデータを復号しようと試みる。これらの損失又は破損したデータは、正しいデータの損失及び/又は誤ったデータの提示を生じることがある復号エラーを生成する。]
[0041] ビデオデコーダ26は、連続エラー処理動作及びエラー隠蔽動作を実行するように構成できる。エラー処理動作では、ビデオデコーダ26は、復号エラーを検出し、破損データセグメントと呼ばれる、エラーによって破損されたデータの総範囲を決定する。破損データセグメントは一般に、最初に符号化されたビットストリーム中のデータに対して、幾つかの重大な点で、損失した、破損した、又は誤った受信ビットストリーム中のデータのセグメントを指す。エラーがスライス中に検出された場合、スライス中の全てのMBは好ましくは隠蔽される。しかしながら、復号エラーによる影響を受ける最初のMBと最後のMBとを決定することが必要である。カレントスライスの最初のMBは、そのスライスの復号の開始時に容易に決定できる。しかしながら、スライスの可変サイズのために、スライスの最後のMBは容易に知られない。その上、復号エラーが複数のスライスにわたる場合、隠蔽すべき破損データセグメント中の最後のMBは、後のスライス内に存在することがある。言い換えれば、破損データセグメントは、1つのスライス又は複数のスライスを含むことがある。]
[0042] いずれの場合も、隠蔽すべき最後のMBは、適切に受信される次の利用可能なスライスの最初のMBを検出することによって、例えば、スライスに関連するヘッダ中で関連する次の再同期マーカの検出に基づいて識別される。その場合、潜在的な破損データの最後のMBは、次の利用可能なスライスの最初のMBの直前のMBとして識別される。本開示で説明する連続エラー処理技法は、ルックアヘッド動作を必要とすることなく、MBの識別情報を隠蔽することを可能にする。このようにして、連続エラー処理技法は、ビデオデコーダ26によって実行されるエラー処理及び隠蔽動作の効率を向上させることができる。]
[0043] 一般に、次のスライスをバッファし、ルックアヘッドする代わりに、ビデオデコーダ26は、最初に符号化ビデオデータのカレントスライスの開始を決定し、カレントスライスを復号し始める。復号エラーが検出されたとき、ビデオデコーダ26は、受信したビデオデータの次の利用可能なスライスの開始を決定することによって、復号を再同期させることに進むことができる。例えば、復号エラーに応答して、ビデオデコーダ26は、カレントスライスを復号することを止め、ビットストリームを解析することによって識別できる次の利用可能なスライスを復号することに進むことができる。次の利用可能なスライスはビットストリーム中の後のスライスである。後のスライスの開始に基づいて、ビデオデコーダ26は、破損データセグメントの終了を決定することができ、その終了は、カレントスライスの終了か、又はカレントスライスと次の利用可能なスライスとの間に存在する別のスライスの終了とすることができる。ビデオデコーダ26が検出されたエラーを含むスライスを識別したことを考えて、ビデオデコーダ26は、カレントスライスの開始と次の利用可能なスライスの開始とに基づいて破損データセグメント中のエラーを隠蔽することができる。]
[0044] 例示として、ビデオデコーダ26は、フレームを受信し、フレームの第1のスライスの開始を決定することができる。スライスがフレーム中の第1のスライスである場合、第1のスライスの開始は、第1のスライスのMB番号、例えば、MB番号0を含むことができる。次に、ビデオデコーダ26は、ルックアヘッド手法とは逆に、第1のスライスの最後のMBを決定することなく、第2のスライス又はスライスヘッダにアクセスすることさえなく、第1のスライスを復号することができる。このようにして、ビデオデコーダ26は、通常ならば次のスライスをルックアヘッドし、次いで復号のためにカレントスライスに戻るために必要となるのであろう追加のバッファをなくすことができる。]
[0045] 第1のスライス中にエラーを検出すると、ビデオデコーダ26は、発生した復号エラーを示すためにエラーフラグを設定することができる。エラーフラグは、それぞれエラー又はエラーがないことを示すように設定されリセットされる単一のビット、又はエラーインジケータの他のタイプ、メッセージ、コマンド、ビットパターン、コードワードなど、様々な形態のいずれかをとることができ、デコーダに関連するメモリ又はレジスタに記憶される。エラーが検出されると、ビデオデコーダ26は、次の利用可能なスライスの開始を決定することによって、例えば、ビットストリーム中で発見できる次のスライスヘッダを参照することによって、復号プロセスを再同期させることに進むことができる。ここでも、この次の利用可能なスライスは、符号化ビットストリーム中のまさにその次のスライスとすることはできず、代わりに、受信したビットストリーム中の次のスライスである。従って、次の利用可能なスライスは、複数のスライスの損失の結果として、ビットストリーム中の第3、第4又は第5の(又は後の)スライスとなる可能性がある。その上、更に以下で説明するように、次の利用可能なスライスは、第1のスライスと同じフレーム内に含まれることさえない。しかしながら、連続エラー処理技法は、単一のスライス、複数のスライス、更には複数のフレームにわたる復号エラーを効率的に処理するために、これらの例の各々において適用できる。]
[0046] 復号エラーがどれくらい多くのスライス又はフレームにわたるかにかかわらず、ビデオデコーダ26は、次の利用可能なスライスの開始に基づいて、復号エラーを含む破損データセグメントの終了を決定する。一例として、第1のスライスを復号すると、ビデオデコーダ26は、第1のスライスの開始をMB番号0として決定し、復号エラーを検出し、次いで、MB番号Nにおいて次の利用可能なスライスの開始を探す。これは、破損データセグメントが1つ以上のスライスにわたっているが、単一のフレーム内に存在すると仮定する。MB番号Nに基づいて、ビデオデコーダ26は、復号エラーを含む破損データセグメントの終了がMB番号N−1であると決定することができる。例えば、第2のスライス中の最初のMB番号が55である場合、破損データセグメント中の最後のMBのMB番号は54となる。この決定を用いて、ビデオデコーダ26のエラー処理動作は、MB0からMB54にわたる破損データセグメントを隠蔽しなければならないことを示す。]
[0047] ビデオデコーダ26は、多くの隠蔽技法に従ってエラーを隠蔽することができる。ビデオデコーダ26は、例えば、MB番号0〜54を、前に復号されたフレームなど、隣接フレームからのMB番号0〜54と交換することによって、エラーを隠蔽することができる。代替的に、ビデオデコーダ26は、補間、外挿又は動き補償補間など、より精巧な技法を採用して、復号エラーによって潜在的に影響を受けるMBを交換することができる。スライスを復号してエラー隠蔽を実行するときに、ビデオデコーダ26は、必要に応じて、ユーザに提示するために復号されたビデオデータを表示装置28に転送できる。]
[0048] ルックアヘッド動作を回避した結果として、ビデオデコーダ26は、頻繁なルックアヘッド動作のためにビットストリームの部分をバッファすることを必要とすることなく、ビットストリームを連続的に復号することに進むことができる。その上、ビデオデコーダ26は、実際のエラーの隠蔽をサポートすることが必要なときに、エラーが存在するか否かにかかわらず、ルックアヘッド動作を連続的に実行するのではなく、エラー処理動作を起動することができる。多くの適用例では、エラーは、わずかな割合のビデオスライスのみに発生する。連続的にではなく、オンデマンドでエラー処理を適用し、それにより連続ルックアヘッドのバッファリングを回避することによって、ビデオデコーダ26は、消費する計算リソース及び電力リソースをより小さくし、実装のための計算の複雑さを低減することができる。ビデオデコーダ26が、モバイルワイヤレス通信デバイスなどの制限された電力リソースをもつ組込みシステムの一部を形成するとき、電力節約は特に重要である。]
[0049] システム10の可能な実装形態の更なる詳細について次に説明する。場合によっては、情報源12及び宛先装置14は、ほぼ対称に動作することができる。例えば、情報源12及び宛先装置14はそれぞれ、ビデオ符号化及び復号コンポーネントを含むことができる。従って、システム10は、例えばビデオストリーミング、ビデオブロードキャスト又はビデオ電話のための装置12と装置14との間の一方向又は双方向のビデオ送信をサポートすることができる。本明細書で説明する連続エラー処理技法は、例えば、複合コーデック中の符号化コンポーネントと復号コンポーネントの両方を含む装置に適用可能である。更に、幾つかの態様では、エラー処理技法は、復号すべきデータを符号化したエンコーダが存在する同じ装置中に存在するデコーダ内に適用される。この場合、例えば、符号化データは、宛先装置14などの別の装置に送信されるのではなく、ローカルでアーカイブされ、次いでローカル再生のために復号される。エラー処理技法は、この例では、データ記憶媒体に対するビデオデータ書込み及び読取り動作中に破損したか、又は他のファクタにより破損した符号化ビデオデータに適用される。]
[0050] 前述のように、ビデオエンコーダ20及びビデオデコーダ26は、Moving Picture Experts Group(MPEG)−2、MPEG−4、ITU−T H.263又はH.264/MPEG−4 AVCなどのビデオ圧縮規格に従って動作することができる。図1には示されていないが、幾つかの態様では、ビデオエンコーダ20及びビデオデコーダ26はそれぞれ、オーディオエンコーダ及びデコーダとそれぞれ統合でき、適切なMUX−DEMUXユニット、又は他のハードウェア及びソフトウェアを含み、共通のデータストリーム又は別個のデータストリーム中のオーディオとビデオの両方の符号化を処理することができる。このようにして、情報源12及び宛先装置14は、オーディオデータ及びビデオデータを含むマルチメディアデータに対して動作することができる。適用可能な場合、MUX−DEMUXユニットはITU H.223マルチプレクサプロトコル、又はユーザデータグラムプロトコル(UDP)など他のプロトコルに準拠することができる。] 図1
[0051] H.264/MPEG−4 AVC規格は、合同ビデオチーム(JVT)として知られる共同パートナーシップの成果として、ISO/IECMPEGとともにITU−T Video Coding Experts Group(VCEG)によって公式化された。幾つかの態様では、本開示で説明する技法は、一般にH.264規格に準拠するデバイスに適用することができる。H.264規格は、ITU−T研究グループによる2005年3月付けのITU−T勧告H.264「Advanced Video Coding for generic audiovisual services」に記載されており、本明細書ではH.264規格又はH.264仕様、又はH.264/AVC規格又は仕様と呼ぶ。]
[0052] 場合によっては、ビデオエンコーダ20及びビデオデコーダ26は、空間、時間及び/又は信号対雑音比(SNR)スケーラビリティのためのスケーラブルビデオ符号化(SVC)をサポートするように構成できる。ビデオエンコーダ20及びビデオデコーダ26は、幾つかの態様では、SVCのための微細精度SNRスケーラビリティ(FGS)符号化(fine granularity SNR scalability (FGS) coding)をサポートするように構成できる。ビデオエンコーダ20及びビデオデコーダ26は、ベースレイヤ及び1つ以上のスケーラブルエンハンスメントレイヤの符号化、送信及び復号をサポートすることによって様々な程度のスケーラビリティをサポートすることができる。スケーラブルビデオ符号化の場合、ベースレイヤはベースラインレベルの品質でビデオデータを搬送する。1つ以上のエンハンスメントレイヤは追加データを搬送して、より高い空間的レベル、時間的レベル及び/又はSNRレベルをサポートする。]
[0053] ベースレイヤは、エンハンスメントレイヤの送信よりも信頼できる方法で送信できる。例えば、変調信号の最も信頼できる部分はベースレイヤを送信するために使用でき、変調信号のあまり信頼できない部分はエンハンスメントレイヤを送信するために使用できる。ベースレイヤ及びエンハンスメントレイヤは、物理レイヤ上の階層変調を使用して符号化されるので、同じキャリア又はサブキャリア上で送信できるが、伝送特性が異なることによりパケットエラーレート(PER)が異なることになる。]
[0054] 幾つかの態様では、ビデオブロードキャストに関して、本開示で説明する技法を、Forward Link Only(FLO) Air Interface Specification、即ちTechnical Standard TIA-1099(「FLO Specification」)として2007年7月に発表された「Forward Link Only Air Interface Specification for Terrestrial Mobile Multimedia Multicast」を使用して、terrestrial mobile multimedia multicast(TM3)システムでリアルタイムビデオサービスを配信するための拡張H.264ビデオ符号化に適用することもできる。例えば、チャネル16は、FLO仕様などに従ってワイヤレスビデオ情報をブロードキャストするために使用されるワイヤレス情報チャネルを備えることができる。FLO仕様は、ビットストリームシンタックス及びセマンティックス、並びにFLO Air Interfaceに適した復号プロセスを定義する例を含む。]
[0055] 代替的に、DVB−H(digital video broadcast-handheld)、ISDB−T(integrated services digital broadcast-terrestrial)、又はDMB(digital media broadcast)などの他の規格に従ってビデオをブロードキャストすることができる。従って、様々な態様では、情報源12は、モバイルワイヤレス端末、ビデオストリーミングサーバ、又はビデオブロードキャストサーバとすることができる。しかしながら、本開示で説明する技法は、特定のタイプのブロードキャスト、マルチキャスト、又はポイントツーポイントシステムに限定されない。ビデオブロードキャストの場合、情報源12は、ビデオデータの幾つかのチャネルを、その各々が図1の宛先装置14と同様とすることができる複数の宛先装置にブロードキャストすることができる。従って、図1には単一の宛先装置14が示されているが、ビデオブロードキャストの場合、情報源12は、より典型的には、ビデオコンテンツを多くの宛先装置に同時にブロードキャストすることができる。] 図1
[0056] 送信機22、通信チャネル16、及び受信機24は、イーサネット(登録商標)と電話(例えば、POTS)とケーブルと電力線と光ファイバシステムとのうちの1つ以上を含む有線又はワイヤレス通信システム、及び/又はワイヤレスシステムによる通信のために構成でき、ワイヤレスシステムは、符号分割多元接続(CDMA又はCDMA2000)通信システム、周波数分割多元接続(FDMA)システム、直交周波数分割多元(OFDM)接続システム、GSM(登録商標)(Global System for Mobile Communication)又はGPRS(General packet Radio Service)若しくはEDGE(拡張データGSM環境)などの時分割多元接続(TDMA)システム、TETRA(Terrestrial Trunked Radio)携帯電話システム、広帯域符号分割多元接続(WCDMA)システム、high data rate 1xEV-DO(First generation Evolution Data Only)又は1xEV-DO Gold Multicastシステム、IEEE802.18システム、MediaFLO(登録商標)システム、DMBシステム、DVB−Hシステム、若しくは2つ以上のデバイス間のデータ通信のための別の方式のうちの1つ以上を備える。]
[0057] ビデオエンコーダ20及びビデオデコーダ26はそれぞれ、1つ以上のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア又はそれらの任意の組合せを用いて実装できる。ビデオエンコーダ20及びビデオデコーダ26の各々を1つ以上のエンコーダ又はデコーダ中に含めることができ、そのいずれかは複合エンコーダ/デコーダ(コーデック)の一部としてそれぞれモバイル装置、加入者装置、ブロードキャスト装置、サーバなどに統合できる。更に、情報源12及び宛先装置14はそれぞれ、適用可能なとき、符号化ビデオの送信及び受信のために適切な変調、復調、周波数変換、フィルタ処理、及び増幅器コンポーネントを含み、適用可能な場合、ワイヤレス通信をサポートするために十分な無線周波(RF)ワイヤレスコンポーネント及びアンテナを含むことができる。しかしながら、説明を簡単にするために、図1では、そのようなコンポーネントは概して、情報源12の送信機22及び宛先装置14の受信機24であるとして要約されている。] 図1
[0058] 図2は、本開示で説明するエラー処理及び隠蔽技法を実行するビデオデコーダ26の一例を示すブロック図である。ビデオデコーダ26は、図1の宛先装置14のビデオデコーダに対応する。図2の例に示すように、ビデオデコーダ26は、受信バッファ30と、復号エンジン32と、エラー処理モジュール34と、エラー隠蔽モジュール36と、再構成(RECON)バッファ38とを含む。一般に、受信バッファ30は、ビデオエンコーダ20によって符号化されたデータなどの符号化ビデオデータを受信し、記憶する。再構成バッファ38は、復号エンジン32によって復号され、再構成された復号ビデオデータを記憶する。再構成バッファ38中の復号ビデオデータは、受信バッファ30から得られた予測符号化ビデオデータの復号の際に復号エンジン32によって使用される参照フレームを与えるために使用できる。更に、再構成バッファ38から得られた復号ビデオデータは、復号ビデオビットストリーム中のエラーを隠蔽するためにエラー隠蔽モジュール36によって使用できる。再構成バッファ38中の再構成されたデータは、様々な後処理動作のうちのいずれかに復号ビデオデータとして与えられる。ビデオデコーダ26によって生成された復号ビデオデータは、任意の適用可能な後処理を受けて、表示装置を介してユーザに提示するために出力バッファに与えられる。復号エンジン32、エラー処理モジュール34及びエラー隠蔽モジュール36は協働して、復号ビデオデータを生成する。復号エンジン32、エラー処理モジュール34及びエラー隠蔽モジュール36は、本開示で説明する連続エラー処理プロセスを適用するように構成される。] 図1 図2
[0059] 図1及び図2に含まれ、示される様々なコンポーネント、ユニット又はモジュール、並びに本開示全体にわたって説明する他のコンポーネントは、ハードウェア及び/又はソフトウェアの任意の好適な組合せによって実現できる。図1及び図2、並びに図3では、様々なコンポーネントは、別個のコンポーネント、ユニット、又はモジュールとして示される。しかしながら、図1〜図3を参照しながら説明する様々なコンポーネントの全て又は幾つかは、共通ハードウェア及び/又はソフトウェア内の組合せユニット又はモジュールに統合できる。従って、コンポーネント、ユニット、又はモジュールとしての特徴の表現は、説明しやすいように特定の機能的特徴を強調するものであり、別々のハードウェア又はソフトウェアコンポーネントによるそのような特徴の実現を必ずしも必要としない。] 図1 図2 図3
[0060] 場合によっては、様々なユニットを、1つ以上のプロセッサによって実行されるプログラマブルプロセスとして実装できる。例えば、本開示における様々な特徴を、離散モジュール、ユニット、エンジン又はコンポーネントとして説明したが、それらの特徴は、集積論理装置中で一緒に実装でき、又は個別であるが、相互運用可能な論理装置として別個に実装できる。場合によっては、様々な特徴は、集積回路チップ又はチップセットなどの集積回路装置として実装できる。ソフトウェアで実装した場合、本技法は、実行されると、1つ以上のプロセッサに本開示で説明する方法のうちの1つ以上を実行させる命令を備えるコンピュータ可読記憶媒体によって少なくとも部分的に実現できる。]
[0061] 図2を更に参照すると、受信バッファ30は、符号化ビデオデータを記憶するためのダイナミックランダムアクセスメモリなどのメモリモジュールによって実現できる。符号化ビデオデータは、説明したように、1つ以上のフレーム又はスライスなどのビデオデータユニットを備えることができる。フレーム又はスライスは、MB及びより小さいブロックなどのブロックを含むことができる。例示のために、符号化ビデオデータは複数のフレームを備え、各フレームは1つ以上のスライスを備え、各スライスは複数のMBを備えると仮定する。] 図2
[0062] 復号エンジン32は、受信バッファ30から得られた符号化ビデオデータビットストリームを解析し、符号化ビデオデータを復号する。復号エンジン32は、本開示で説明するビデオ符号化規格のうちの1つ、又は他のビデオ符号化規格によって定義された復号技法を実装することができる。しかしながら、例示のために、復号エンジン32はH.264/MPEG−4 AVC規格による復号技法を実行すると仮定する。復号エンジン32は、復号すべき符号化情報のフレーム、スライス、ブロック及び他のユニットを識別するために、ビット解析を実行して、着信ビットストリームを解析する。更に、復号エンジン32は、符号化情報のユニット中のビデオデータを復号し、再構成するために、再構成を実行する。]
[0063] エラー処理モジュール34は、本開示で説明する連続エラー処理技法に従って復号エラーを処理するように構成される。図2の例では、エラー処理モジュール34は、エラー検出とエラー処理の両方を実行することができる。しかしながら、幾つかの実装形態では、別個のエラー検出及びエラー処理モジュールが設けられる。動作中、エラー処理モジュール34は、復号エンジン32によって生成された復号ビデオデータ中の復号エラーを検出し、正しいデータの損失又は誤ったデータの表示を回避するために隠蔽すべきMBなどのデータの範囲を識別する。] 図2
[0064] エラー隠蔽モジュール36は、エラー処理モジュール34から復号エラー範囲(エラー範囲)を受信する。復号エラー範囲は、どのMBをエラー隠蔽モジュール36によって隠蔽すべきかを指定する。例えば、エラー処理モジュール34は、ビットストリーム中の第1のスライスの最初のMB0から、次の利用可能なスライスの開始MB Nより前の最後のMB N−1にわたる全てのMBをエラー範囲として指定する。エラー隠蔽モジュール36は、復号エンジン32によって生成された識別されたMBを異なるMBと交換するために、様々な隠蔽技法のいずれかに従ってエラーを隠蔽する。例えば、エラー隠蔽モジュール36は、隠蔽されたビデオデータを復号エンジン32に与える。エラー隠蔽モジュール36は、再構成バッファに与えられた復号ビデオデータ中に、隠蔽されたビデオデータを含むことができる。例示として、エラー処理モジュール34がエラー範囲としてMB0〜MB54を指定した場合、エラー隠蔽モジュール36は、MB0〜54を隠蔽して、隠蔽されたMB[0,54]を復号エンジン32に与えることになる。]
[0065] 再構成バッファ38は、受信バッファ30と同様に、復号エンジン32によって生成された復号ビデオデータを記憶するダイナミックランダムアクセスメモリなどのメモリモジュールを表す。更に、復号エンジン32は、受信バッファ26から得られた符号化ビデオデータを復号する際に使用するための再構成バッファから復号ビデオデータを取り出す。特に、復号エンジン32は、他のフレームの復号のための参照フレームとして、再構成バッファ38からの復号ビデオデータを使用する。幾つかの実装形態では、エラー隠蔽モジュール36は、エラーが検出されたとき、復号されたMBを隠蔽するために再構成バッファ38内の指定されたMBを上書きすることができる。代替的に、図2の例の場合のように、復号エンジン32が復号MBを再構成バッファ38に転送する前に、エラー隠蔽モジュール36は、指定されたMBを隠蔽するために、復号エンジン32と連携することがある。例えば、エラー隠蔽モジュール36は、隠蔽されたMBなどの隠蔽されたビデオデータを復号エンジン32に与える。次いで、復号エンジン32は、破損データをエラー隠蔽モジュール36からの隠蔽されたビデオデータと交換し、得られたデータを復号ビデオデータとして再構成バッファ38に書き込む。] 図2
[0066] エラーが検出されたとき、復号エンジン32は、次の利用可能なスライスヘッダのポイントまでのMBを復号し続けるか、又はMBを復号することを止め、ビットストリーム中の次の利用可能なスライスヘッダを探す。エラーが検出されたときにカレントスライスの復号を終了し、エラー隠蔽をサポートするために復号すべき次のスライスに移動することが、より効率的である。次いで、破損データを隠蔽したときに、復号エンジン32は、カレントスライスとして次のスライスの復号を再開する。従って、エラー隠蔽モジュール36は、破損データセグメントを隠蔽するためにMBを書き込むか又は上書きするように構成できる。いずれの場合も、再構成バッファ38に記憶された復号ビデオデータは、復号エンジン32によって生成された復号MBに基づく復号ビデオデータと、復号エラーを隠蔽するためにエラー隠蔽モジュール36によって生成又は選択されたMBとを含むことができる。]
[0067] 動作中、ビデオデコーダ26の受信バッファ30は、最初に図1の受信機24などの受信機から符号化ビデオデータを受信し、符号化ビデオデータを記憶する。復号エンジン32は、フレームのスライスなど、受信バッファ30に記憶された符号化ビデオデータのユニットを取り出すために、受信バッファ30にアクセスする。スライスを取り出した後だが、スライスを復号するより前に、復号エンジン32は、例えば、復号すべきカレントスライスの最初のMBに関連するMB番号を送信することによって、最初にエラー処理モジュール34にスライスの開始について通知する。この最初のMBはスライス開始MBと呼ばれる。エラー処理モジュール34は、スライスの開始において最初のMBの番号を記憶する。] 図1
[0068] 復号エンジン32は、スライス中のMBを復号することに進み、復号スライスデータを再構成バッファ38に記憶する。スライスを復号しながら、復号エンジン32は、復号スライスを再構成バッファ38に記憶することに加えて、復号ビデオデータをエラー処理モジュール34に出力することもできる。様々な実装形態では、エラー処理モジュール34は、再構成バッファ38に記憶された復号ビデオデータ、復号エンジンから直接与えられた復号ビデオデータ、又は異なるバッファに記憶された復号ビデオデータを分析する。各場合において、エラー処理モジュール34は、復号エラーが復号ビデオデータ中に存在するかどうかを決定するために、復号ビデオデータを分析するか、又は検査する。従って、エラー検出機能をエラー処理モジュール34内に設けることができる。代替的に、様々な実装形態では、復号エンジン32、又はビデオデコーダ26内の別のコンポーネントが、復号エラー検出機能を含むことがある。]
[0069] エラー処理モジュール34は、様々な復号エラーを検出する多くの方法で、復号ビデオデータを分析することができる。例えば、エラー処理モジュール34は、シンタックスエラー、セマンティックエラー、及び/又は他の符号化エラーを、受信バッファ30によって受信し復号エンジン32によって復号した符号化スライス中で検出する。一般に、復号エンジン32は、例えば、H.264/MPEG−4 AVCなどの適用可能な符号化技法によって指定されたシンタックスを使用して、ビットストリームを復号する。ビットストリームが、適用可能なシンタックスによって指定された予想されるビットパターンから逸脱した場合、シンタックスエラーを検出する。復号が、範囲外データ、無効な情報、又は適用できないコマンドなど、間違った値又は動作をビデオデコーダ26中で生成したとき、セマンティックエラーを検出する。エントロピー符号化値が、例えば、コンテキスト適応型可変長符号化(CAVLC)テーブルなどの適用可能な符号化テーブル中の値又はパターンに一致しなかった場合、符号化エラーを検出する。コンテキスト適応型2値算術符号化(CABAC)などの他のタイプのエントロピー符号化を使用することができる。]
[0070] 従って、シンタックスエラー検査を実行するために、エラー処理モジュール34は、復号ビットストリームのビットパターンを、適用可能なシンタックスによって指定された予想されるビットパターンと比較する。ビットパターンが、予想されるビットパターンと矛盾している場合、エラー処理モジュール34は復号エラーが検出されたことを示す。同様に、セマンティックエラー検査を実行するために、エラー処理モジュール34は、値を1つ以上のシンタックス要素に分析して、これらの値が有効であることを確実にする。例えば、エラー処理モジュール34は、値が他の値と矛盾しないかどうか、現在復号されたスライスと矛盾しないかどうか、及び/又は前に復号されたフレーム、スライス又はブロックと矛盾しないかどうかを決定する。シンタックス要素値が、許容される又は予想される値の範囲内になかった場合、エラー処理モジュール34は復号エラーの検出を示す。符号化エラーを検出するために、エラー処理モジュール34は、復号されたコードワードを、CAVLC又はCABACテーブルなどの適用可能なエントロピー符号化テーブル中のコードワードのリストと比較する。一致がない場合、エラー処理モジュール34は復号エラーの検出を示す。]
[0071] 復号エラーを検出すると、エラー処理モジュール34は、エラーフラグをビデオデコーダ26に関連するメモリ中に設定し、復号エンジン32に復号エラーについて通知する。復号エンジン32は、検出された復号エラーについて通知されたことに応答して、受信バッファ30に記憶された符号化ビデオデータの復号を再同期させる。具体的には、復号エンジン32は、カレントスライスを復号することを止め、ビットストリームから、例えば次の識別可能なスライス又はNALユニットヘッダによって識別される次の利用可能なスライスを取り出すことに進む。次のスライスは、ビットストリームを解析することによって復号エンジン32が見分けることができる次のスライスであるという点で、次の「利用可能な」スライスと呼ばれる。復号エラーは、NALヘッダ及び/又はフレームヘッダにわたって伝搬していることがあり、それによって、スライス間の区別、更にはフレーム間の区別を、不可能でないとしても困難にする。言い換えれば、復号エラーにより、単一のスライス中にMBの損失又は破損を生じることがあり、その場合、次の再同期ポイントは、受信したビットストリーム又は複数のスライス中のまさにその次のスライスに関連することがあり、ビットストリーム中の後のスライスに関連することがある。従って、次の利用可能なスライスは、例えば、識別可能なNALユニットヘッダによって容易に見分けることができる、ビットストリーム中の次のスライスを指すことがある。NALヘッダは、破損しておらず、容易に見分けることができる点で、「識別可能」と呼ばれる。]
[0072] 復号エラーが検出されたとき、復号エンジン32は、上述のように、カレントスライスの残りを復号することなく、ビットストリーム中の次の利用可能な再同期ポイントに進むことがある。代替的に、エラーフラグが設定されていても、復号エンジン32は、ビットストリームを復号し続けることがある。次の利用可能なスライスが得られたとき、次いで、復号エンジン32はエラー処理及びエラー隠蔽を実行する。復号エンジン32は、エラーフラグが設定された後、ビットストリームを復号し続けるように構成できるが、通常、カレントスライスを復号するのを止め、代わりにエラーが検出された前のスライスのエラー処理及びエラー隠蔽をサポートするために次のスライスに進むことがより効率的であろう。破損データセグメントは、復号された場合でも、エラー隠蔽モジュール36によって隠蔽されることになる。しかしながら、エラーが検出されたときに復号動作を中止し、次の利用可能なスライスに進むことは、より効率的である。復号エラーが検出されなかったとき、復号エンジン32はカレントスライスの残りを復号することに進む。いずれの場合も、復号エンジン32は、次の利用可能なスライスの開始を示す次の再同期ポイントに到達したとき、そのスライスの最初のMBを決定する。更に、復号エンジン32は、エラー処理モジュール34が、前のビデオスライス中の復号エラーの検出を示すためにエラーフラグを設定したかどうかを決定する。]
[0073] エラーフラグが設定されていない場合、復号エンジン32はスライスの最初のMBを記憶し、そのスライスを復号することに進む。この時点で、連続エラー処理手法の場合、前のスライスは、ルックアヘッド手法の場合のように第2のパス上で復号するためにバッファされるのではなく、すでに復号されている。ただし、エラーフラグが設定されている場合、復号エンジン32はエラー処理及びエラー隠蔽を起動する。特に、次の利用可能なスライスに到着したときに、復号エンジン32では、符号化エラーの検出の後にそのスライスに進んだのか、又は符号化エラーがない場合で前のスライスの復号を完了したときなのかを識別しなくてよい。むしろ、次の利用可能なスライスに到着すると、復号エンジン32及びエラー処理モジュール34は、エラーフラグを検査して、通常の過程における連続復号を単に続けるべきか、又はエラー処理及びエラー隠蔽を適用すべきかを決定する。言い換えれば、エラー処理モジュール34は、次の利用可能なスライスに到着したのが、通常のエラーのない復号の結果としてなのか、又はエラー処理を必要とするエラーの検出の結果としてなのかを知らなくてよい。]
[0074] 再び、エラーが検出されたとき、復号エンジン32はカレントスライスを復号することを止め、次の利用可能なスライスを取り出す。次いで、復号エンジン32は、例えばスライスの最初のMBに対応するMB番号を転送することによって、エラー処理モジュール34にその(次の利用可能な)スライスの開始について通知する。エラー処理モジュール34は、このMB番号を受信すると、エラーフラグが設定されているかどうかを検査することによって、復号エラーが前に発生したかどうかを決定する。フラグが設定されていない場合、エラー処理モジュール34は、例えば復号エラーが新たに取り出された次の利用可能なスライス中に検出された場合に後で使用するために、上述のように、この最初のMB番号を記憶する。]
[0075] ただし、エラーフラグが設定されている場合、エラー処理モジュール34はエラーが発生したカレントスライスの終了、例えば最後のMBを決定する。例えば、エラー処理モジュール34は、次の利用可能なスライスの最初のMBに対応するMB番号から1を減算する。復号エラーが複数のスライス及び更に複数のフレームにわたるとき、破損データセグメントは、同様に1つ以上のスライス、及び/又は1つ以上のフレームにわたる。連続エラー処理技法は、以下でより詳細に説明するように、1つ以上のスライス、又は1つ以上のフレームにわたる復号エラーを処理することができる。]
[0076] エラーが発生した破損データセグメントの開始及び終了を決定した後、エラー処理モジュール34は、復号エラー範囲(エラー範囲)と呼ばれるこの情報をエラー隠蔽モジュール36に転送する。この復号エラー範囲に基づいて、エラー隠蔽モジュール36は、再構成バッファ38に記憶された復号ビデオデータを、再構成バッファ38に記憶されることがある、前に復号されたビデオデータと交換することによって、復号エラー範囲によって示される復号エラーを隠蔽する。代替的に、エラー隠蔽モジュール36は、隠蔽されたビデオデータを復号エンジン32に与え、次いで、復号エンジン32は、復号データと隠蔽されたデータとの再構成バッファ38への転送を処理することがある。幾つかの例では、エラー隠蔽モジュール36は、復号エラーを隠蔽する際に使用するために、前に復号されたビデオデータ、例えば前に復号されたMB、スライス又はフレームをキャッシュに格納するか又は局所的に記憶する。代替として、破損データを隠蔽するために、エラー隠蔽モジュール36は、例えば、図2の例に示すように、再構成バッファ38から予め復号されたビデオデータを得ることがある。] 図2
[0077] エラー隠蔽モジュール36は、前に復号されたビデオデータにアクセスする方法にかかわらず、上記に記載された隠蔽技法のうちの1つに従って、復号エラー範囲に対応する復号ビデオデータを前に復号されたビデオデータと交換する。エラー処理モジュール34によって識別される復号エラー範囲がMB0からMB54にわたる場合、例えば、エラー隠蔽モジュール36は、MB0からMB54までの全てのMBを隠蔽する。このようにして、全ての起こりうる破損MBを隠蔽することを確実にするために、スライス全体と同様のものを隠蔽する。]
[0078] エラー隠蔽モジュール36は、隠蔽されたビデオデータを再構成バッファ38に直接書き込む。代替的に、図2に示すように、エラー隠蔽モジュール36は、隠蔽されたビデオデータを復号エンジン32に与えることがある。次いで、復号エンジン32は、適切に復号されたMBと、エラー隠蔽モジュール36からの隠蔽されたビデオデータによって表される隠蔽されたMBとを再構成バッファ38に書き込む。概して本開示で説明するように、エラー隠蔽モジュール36はピクセル領域中のエラー隠蔽を適用することができる。幾つかの実装形態では、エラー隠蔽モジュール36は、エラー隠蔽のための圧縮領域プロセスを適用することができる。例えば、エラー隠蔽モジュール36は、破損MBを隠蔽するために符号化モード(例えば、SKIPモード)を指定するように構成される。従って、本開示で説明する技法は、ピクセル領域隠蔽プロセス又は圧縮領域隠蔽プロセスを含む多種多様なエラー隠蔽プロセスとともに使用される。] 図2
[0079] 破損MBが隠蔽されると、ビデオデコーダ26は、復号ビデオデータに適用される、例えばシャープ化、スケーリングなどの任意の後処理動作を受けた復号ビデオデータを、上述のように、再構成バッファ38を介して表示又は再生のための表示装置28に転送する。次いで、復号エンジン32は、上述した同じエラー処理動作を適用しながら、次の利用可能なスライスを復号することに進む。従って、このエラー処理プロセスは、復号エンジン32がビットストリーム中の後続のスライス及びフレームを通過する際に連続的に適用される。特に、様々な態様では、エラー処理プロセスは、ルックアヘッド動作の必要なしに、連続復号を可能にする。このようにして、ビデオデコーダ26は、宛先装置14内の計算効率及び電力節約を促進することができる。]
[0080] 図3は、図2の例示的なエラー処理モジュール34及びエラー隠蔽モジュール36をより詳細に示すブロック図である。図3の例は、例示のために、エラー処理モジュール34及びエラー隠蔽モジュール36の様々な動作態様を強調するために与えたものであり、本開示で広く説明する連続エラー処理技法を制限するものと考えるべきではない。図3の例では、エラー処理モジュール34は、エラー検出モジュール40とエラーマッピングモジュール42とを含むことができる。エラー検出モジュール40は、シンタックスルール44A、セマンティックルール44B及びエントロピールール44Cなどの適用可能なルールに従って、シンタックスエラー検査、セマンティックエラー検査、及び符号化(例えば、CAVLC又はCABAC)エラー検査などの上述のエラー検査を実行する。エラー検出モジュール40は、エラーステータスインジケータの一例を表すエラーフラグ46を更に含み、維持する。エラーマッピングモジュール42は、破損データセグメントを定義するためにマッピング48を維持する。エラー隠蔽モジュール42は、上述の隠蔽技法のうちの1つ以上を実行する隠蔽エンジン50と、破損データを隠蔽する際に隠蔽エンジン50が使用するビデオデータを受信するビデオバッファ51とを含むことができる。] 図2 図3
[0081] 一例として、受信バッファ30に記憶された符号化ビデオデータを復号するより前に、復号エンジン32は、復号すべきカレントスライスのために、スライスの開始指示(「スライス開始」)をエラー処理モジュール34に送信する。エラー検出モジュール40及びエラー処理モジュール42は、スライス開始を使用して、復号動作中に検出されたエラーを処理することができる。スライスの開始は、1つ以上のスライス又は部分スライスを含む破損データのより大きいセグメントの開始とすることができるので、スライス開始は、図3に示すように、より一般的には「セグメント開始」と呼ばれる。] 図3
[0082] ここでも、モジュール及びユニットは、エラー処理モジュール34の様々な機能的態様を強調するために図3及び他の図に示されている。従って、エラー検出モジュール40、エラーマッピングモジュール42、又は他のモジュールの間の正確な構造的及び機能的関係並びに相互作用は、変更されることがある。エラーマッピングモジュール42は、上述のように、復号すべきカレントスライスの最初のMBを備えるセグメント開始を記憶する。MB番号は、復号ビットストリーム中のシンタックス要素から決定できる。例えば、エラーマッピングモジュール42は、最初のMBを開始MB48Aとして記憶する。カレントスライスがフレーム中の最初のスライスである場合、最初のMBはMB0とすることができる。カレントスライスがフレーム中の後のスライスである場合、最初のMBはより大きい番号を有する。] 図3
[0083] セグメント開始を受信すると、エラー検出モジュール40は、シンタックス要素を有する復号MBを備える、復号エンジン32によって生成された復号ビデオデータを分析する。エラー検出モジュール40は、復号されたシンタックス要素に対して、シンタックスエラー検査、セマンティックエラー検査、及びエントロピー符号化エラー検査を実行する。特に、エラー検出モジュール40は、復号ビデオデータ中に復号エラーがあるかどうかを決定するために、シンタックスルール44A、セマンティックルール44B及びエントロピールール44Cを適用する。これらのエラー検査の結果に基づいて、エラー検出モジュール40は、エラー状態を記憶することが可能なエラーフラグ46又は任意の他のインジケータの値を制御する。例示のために、エラー検出モジュール40が復号エラーを検出したと仮定すると、エラー検出モジュール40は、エラーフラグ46を設定し、エラーの指示(図3の「復号エラー」)をビデオデコーダ26の復号エンジン32に転送する。] 図3
[0084] エラー指示に応答して、復号エンジン32は、例えば、カレントスライスの復号を止め、ビットストリーム中の次の利用可能なスライスを探すことによって、復号を中止し、復号を再同期させる。言い換えれば、復号エラーが検出された場合、復号エンジン32はカレントスライスの復号を止め、次の利用可能なスライスを復号することに進むことができる。ここでも、次の利用可能なスライスは、次のスライスのNALユニットヘッダ中の再同期コードワードによって識別される。代替的に、エラー指示がない場合、復号エンジン32は、スライスの終了に達し、次の利用可能なスライスに遭遇するまで、カレントスライスを復号し続けることがある。いずれの場合も、次の利用可能なスライスに達すると、復号エンジン32は、別のセグメント開始指示をエラー検出モジュール40に転送する。エラー検出モジュール40は、新しいセグメント開始、例えば、スライス開始を受信し、エラーフラグ46の状態に基づいて、復号エラーが前に復号されたスライス中に存在したかどうかを決定する。]
[0085] エラーフラグ46の状態に基づいて、エラー検出モジュール40は、復号ビデオを分析し続けるか、又はエラーマッピングモジュール42を起動することができる。例えば、エラーフラグ46が設定されず、エラーが検出されなかったことがわかった場合、エラー検出モジュール40は、新たに受信したスライスに対してエラー検出を実行することに進む。しかしながら、エラーフラグ46が設定され、エラーが検出されたことがわかった場合、エラー範囲、即ち、隠蔽されなければならない破損データセグメントの範囲を決定するために、エラーマッピングモジュール42がエラー検出モジュール40によって起動される。この場合、エラーマッピングモジュール42は、新たに受信したスライス中の最初のMBの番号を決定する。更に、エラーマッピングモジュール42は、復号エラーが、新たに受信したスライス中の最初のMB番号に基づいて検出された破損データセグメント中の最後のMB又は終了MBを決定する。]
[0086] 例えば、終了MB番号を決定するために、エラーマッピングモジュール42は、新しいスライス開始のすぐ前に先行する最後のMBの番号を得るために、新たに受信したスライスの最初のMB番号から1を減算する。図3の例で示すように、終了MBは、終了MB48Bとして記憶される。例えば、新たに受信したスライス中の最初のMBが55である場合、破損データ中の最後のMBは55−1=54となる。従って、エラーマッピングモジュール42は、エラー範囲を、開始MB48Aと終了MB48Bとの間にわたり、開始MB48Aと終了MB48Bとを含むものとして、例えば、上記の例ではMB0〜MB54として定義する。エラー範囲は、復号ビデオデータに対するエラーの悪影響をなくすか又は低減するために隠蔽すべきMBを示す。] 図3
[0087] 以下で説明するように、エラー検出モジュール40はまた、幾つかの態様では、開始MB番号48Aと終了MB番号48Bとに対応するMBに関連するシンタックス要素の値から、開始フレーム番号と終了フレーム番号とを決定する。即ち、エラー検出モジュール40は、開始MB番号48Aに対応する、受信した復号ビデオデータ中に表されるMBを検査し、そのMBが関連する開始フレーム番号を決定する。エラー検出モジュール40は、その開始フレーム番号をエラーマッピングモジュール42に転送し、エラーマッピングモジュール42は、開始フレーム番号を開始フレーム48Cとして記憶する。エラー検出モジュール40はまた、終了MB番号48Bに対応する、受信した復号ビデオデータ中に表されるMBを検査し、そのMBが関連する終了フレーム番号を決定する。エラー検出モジュール40は、その終了フレーム番号をエラーマッピングモジュール42に転送し、エラーマッピングモジュール42は、終了フレーム番号を終了フレーム48Dとして記憶する。]
[0088] 上述のように、エラーマッピングモジュール42は、マッピング48からエラー範囲又は他のエラー記述を生成し、そのエラー範囲をエラー隠蔽モジュール36にパスすることができる。エラー範囲は、幾つかの実装形態では、破損データセグメントの開始MB48A及び終了MB48Bだけでなく、開始フレーム48C及び終了フレーム48Dをも含むことができる。例えば、エラーマッピングモジュール42は、復号エラー(及び得られた破損データセグメント)が、開始フレーム48C及び終了フレーム48Dを比較することによって単一のフレーム内にあるかどうか、又は、復号エラーが2つ以上のフレームにわたるかどうかを決定する。MB番号付けは、各フレームの開始時に通常0にリセットされる。従って、復号エラーが単一のフレームよりも多くのフレームに影響を及ぼすとき、MB番号を提示するのみのエラー範囲を与えることは十分ではないことがある。例えば、開始MBが第1のフレーム中のMB74である場合、終了MBは第2のフレーム中のMB56とすることができる。従って、隠蔽目的のためのエラー範囲を正確に解決するために、フレーム番号並びにMB番号を追跡することが必要である。]
[0089] 一般に、開始フレーム48Cと終了フレーム48Dとによって表される2つのフレーム番号が等しい場合、エラーマッピングモジュール42は、復号エラーが、開始フレーム48Cと終了フレーム48Dの両方によって識別されるフレーム番号に対応する単一のフレーム内にあると決定する。しかしながら、開始フレーム番号48Cと終了フレーム番号48Dとが等しくない場合、エラーマッピングモジュール42は、復号エラーが2つ以上のフレームにわたるように、エラー範囲を決定する。従って、エラーマッピングモジュール42は、開始MB番号48A及び終了MB番号48B、並びに開始フレーム番号48C及び終了フレーム番号48Dを使用して隠蔽すべきMBの範囲を識別するように構成できる。]
[0090] エラー隠蔽モジュール36は、エラー範囲を受信し、隠蔽エンジン50を採用してエラー範囲によって識別されたMBを隠蔽する。エラー隠蔽エンジン50は、エラー範囲によって識別されたそれらのMBを隠蔽する際に使用するために、前に復号されたフレームの前に復号されたMBを取り出し、ビデオバッファ51に記憶する(図3の「バッファされたビデオデータ」)。上述のように、幾つかの態様では、前に復号されたMBは、1つ以上の隣接フレームから得られ、隠蔽すべきMBと空間的にコロケートされる。前に復号されたMBは、交換フレームデータを形成するために、エラー範囲中の潜在的に破損したMBを交換し、それによって隠蔽する。幾つかの実装形態では、エラー隠蔽モジュール36は、再構成バッファ38からの復号ビデオデータとして、前に復号されたMBを得る。] 図3
[0091] 隠蔽エンジン50は、エラー範囲によって識別された復号エラーを隠蔽するために、様々な他の隠蔽技法のいずれかを実装することができる。エラー隠蔽エンジン50は、隠蔽されたビデオデータを交換データとしてビデオ復号エンジン32に与える。ビデオ復号エンジン32は、適切に復号されたビデオデータと隠蔽されたビデオデータとを再構成バッファ38に与える。代替的に、隠蔽されたフレームデータを使用して、復号エンジン32によって生成され、再構成バッファ38に記憶された復号ビデオデータの一部に書き込むか、又はその一部を上書きする。いずれの場合も、再構成バッファ38は、表示装置を駆動する際に使用するための復号ビデオデータを与える。]
[0092] 図4は、連続エラー処理及び隠蔽技法を実行する際の、ビデオデコーダ26などのビデオデコーダの例示的な動作を示すフローチャートである。上述のように、ビデオデコーダ26は、図1の受信機24などの受信機から符号化ビデオデータを受信する(52)。ビデオデコーダ26は、符号化ビデオデータを受信バッファ30中にバッファする。復号エンジン32は、符号化ビデオデータのカレントスライスの開始を決定し(54)、スライスを復号する(56)。後述するように、エラーが検出された場合、エラー処理モジュール34がカレントスライスの開始を使用して、破損データセグメントのためのエラー範囲を識別する。エラー処理モジュール34が復号エラーを検出せず(58)、復号がカレントスライスの終了に達しなかった(59)場合、復号エンジン32はスライスを復号し続ける(56)。] 図1 図4
[0093] 復号エラーの検出なしに、スライスの終了に達した(59)場合、復号エンジン32は、追加の符号化データのうちの次の利用可能なデータを受信する(52)ことに進み、そのスライスに対して動作(54)、(56)及び(58)を繰り返す。復号エラーが検出されなかった(58)とき、ビデオデコーダ26は、ビットストリーム中の連続するスライスを復号し続ける。しかしながら、復号エラーが検出された(58)とき、エラー処理モジュール34は、符号化ビデオデータの次の利用可能なスライスの開始を決定し(60)、次の利用可能なスライスの開始に基づいて、(カレントスライスを含む)破損データセグメントの終了を決定する(62)。]
[0094] ここでも、次の利用可能なスライスは、ビットストリーム中で識別できる次の利用可能なセグメントである。従って、破損データが単一のスライスのみに影響を及ぼす場合、次の利用可能なスライスは、復号エラーが検出されたスライスに続くまさにその次のスライスとすることができる。一方、エラーがデータの2つ以上のスライスの損失又は破損を生じた場合、次の利用可能なスライスは、当初符号化されたビットストリーム中でカレントスライスのすぐ後に続いていなかった後のスライスとすることができる。]
[0095] 上述のように、次の利用可能なスライスの開始に基づいて(60)、エラー処理モジュール34は、破損データセグメントに関連する破損データセグメントの終了が次の利用可能なスライス中の最初のMB番号から1を減算することによって得られると決定する。エラー処理モジュール34は、隠蔽のためのエラー範囲を定義するために破損データセグメントの開始及び終了をエラー隠蔽モジュール36に与える。データ損失の範囲に応じて、エラー範囲は、元のビットストリームの単一のスライス又は複数のスライスをカバーすることがある。]
[0096] エラー範囲を用いて、エラー隠蔽モジュール34は、破損データセグメントの開始から破損データセグメントの終了にわたるビデオデータを隠蔽する(64)。破損データセグメントを隠蔽すると、ビデオデコーダ26は、次の利用可能なスライスに関連する符号化ビデオデータを受信する(52)ことに進むので、次の利用可能なスライスを、即ち、新しいカレントスライスとして復号する。この場合、ビデオデコーダ26がビデオビットストリームに沿って進む際に、次の利用可能なスライスは、次に図4に示すプロセスのためのカレントスライスになり、図4で概説する様々な動作を繰り返し、連続的な復号、エラー処理及び隠蔽をサポートする。] 図4
[0097] 上述のように、エラー処理モジュール34は、復号エラーが、シンタックスエラー検査に基づいて発生したのか、セマンティックエラー検査に基づいて発生したのか、又はエントロピー符号化エラー検査に基づいて発生したのかを決定する(58)。エラー処理モジュール34がエラーを検出した場合、エラー処理モジュール34は、復号エンジン32にエラーについて通知する。エラー指示に応答して、ビデオデコーダ32は、受信バッファ30に記憶された符号化ビデオデータの次の利用可能なスライスの開始を決定する(60)ために、ビットストリームを解析することによって、符号化ビデオデータの復号を再同期させる。特に、復号エンジン32は、復号エラーが発生したときには再同期のためのビットストリームを解析することによって、又はエラーが検出されなかったときにはカレントスライスを復号する通常の過程でのいずれかで、次の利用可能なスライスに到着する。エラーが検出された場合、エラー処理モジュール34はエラー範囲、例えば、第1のセグメントの開始及び終了を決定し、エラー範囲をエラー隠蔽モジュール36に与える。]
[0098] 図5は、フレーム内の復号エラーのためのエラー処理及び隠蔽を実行する際の、ビデオデコーダ26などのビデオデコーダの例示的な動作を示すフローチャートである。H.264/MPEG−4 AVC規格に従って編成されたビットストリームに関して本技法について以下で説明するが、符号化ビデオデータは複数のフレームを備え、各フレームは複数のスライスを備え、各スライスは複数の符号化MBを備える。スライスはNALユニットヘッダによって識別できる。H.264規格に関して説明するが、本技法は、やはりこの例示的な態様に厳密に限定されるべきではないが、ビデオデータの符号化のための他の技法に広く適用可能である。] 図5
[0099] 図5は、概して図4に準拠するが、幾つかの追加の詳細を示す。図5の例では、ビデオデコーダ26は、受信バッファ30を介して符号化ビデオフレームデータを受信する(66)。ビデオデコーダ26の復号エンジン32は、第1のフレームの第1のスライスに最初にアクセスするときに、第1のスライスに関連する開始MB番号を決定する(68)。第1のスライスは、代替的に、復号エンジン32によって復号されるカレントスライスと呼ばれる。復号エンジン32がカレントスライスを復号する(70)一方、エラー処理モジュール34は、例えば、シンタックスエラー、セマンティックエラー又はエントロピー符号化エラーなどの復号エラーを検出する(72)。復号エラーを検出した(72)場合、エラー処理モジュール34はエラーフラグを設定する(74)。] 図4 図5
[0100] 復号エラーを検出せず(72)、復号エンジン32がカレントスライスの終了にまだ達しなかった(76)場合、復号エンジン32はカレントスライスを復号し続ける(70)。復号エラーが検出された(72)場合、又はカレントスライスの終了に達した(76)場合、エラー処理モジュール34は、次の利用可能なスライスの開始MB番号を決定する(78)。エラーが検出されたとき、復号エンジン32は、復号し続けるか、又はカレントスライスを復号するのを止め、次の利用可能なスライスの位置を特定するためにビットストリームを解析する。エラーが検出されなかった(72)とき、復号エンジン32は、カレントスライスの復号を完了した後に次の利用可能なスライスに達し、その場合、スライスの終了に達する(76)。従って、復号エンジン32は、前のスライスの正常な復号時に、又は前のスライス中の復号エラーの検出に続く再同期の一部としてのいずれかで、次の利用可能なスライスに到着する。]
[0101] エラーフラグが設定されていない(80)場合、復号エンジン32は、次の利用可能なスライスをカレントスライスとして復号する(70)ことに進む。従って、次の利用可能なスライスは、図5で概説する動作のためのカレントスライスになり、復号プロセスが繰り返される。しかしながら、エラーフラグが設定されている(80)場合、エラー処理モジュール34は、次の利用可能なスライスの開始MB番号に基づいて、カレントスライスを含む破損データセグメントの終了MB番号を決定する(82)。例えば、エラー処理モジュール34は、次の利用可能なスライスの開始MB番号から1を減算して、第1のスライスを含むセグメントの終了MB番号を決定する(82)。] 図5
[0102] 1つのスライスが破損していた場合、終了MB番号はカレントスライスの終了MB番号とすることができる。しかしながら、2つ以上のスライスが破損していた場合、終了MB番号は後のスライスの終了MB番号とすることができる。いずれにしても、カレントスライスの開始MB番号と終了MB番号とを使用して、エラー処理モジュール34は、エラー隠蔽モジュール36が使用するエラー範囲を定義する。エラー隠蔽モジュール36は、カレントスライスの開始MB番号から破損データセグメントの終了MB番号までの全てのMBを隠蔽することによって、復号エラーを隠蔽する(84)ことに進む。エラー隠蔽を完了する(84)と、ビデオデコーダ26は、復号すべき次のスライスのためのエラーフラグをリセットする、即ち、復号すべき次のスライスにとって適切ではない、長く記憶された状態をクリアする。更に、ビデオデコーダ26は、カレントスライスとして次の利用可能なスライスを復号する(70)ことに進み、図5で概説する様々なエラー処理動作を繰り返す。] 図5
[0103] 図6は、フレーム内に復号エラーを備える例示的なビットストリーム86へのエラー処理及び隠蔽技法の適用を示す図である。ビットストリーム86は、一般にH.264/MPEG−4 AVC規格に従ってフォーマッティングできる。図6の例では、復号エラーは、ビットストリームの中央に発生し、1つのNALユニットヘッダを含んでいる。エラー隠蔽のためのMB0〜54を識別するために、連続エラー処理技法を図6のシナリオに適用することができる。図6は、2つのフレーム88A、88B(「フレーム88」)を示し、フレーム88Aは複数のNALヘッダ90A〜90Dを備え、フレーム88Bは複数のNALヘッダ90E〜90Hを備える。NALヘッダ90Aと90Eとは、それぞれのフレーム88の開始を示すことを表すために、それぞれ影付きで示される。NALヘッダ90A〜90H(「NALヘッダ90」)の各々は、スライスを含んでいるNALユニットの開始を示す。各フレーム88は、1つ以上のスライス、及びより可能性がある複数のスライスを含むことができる。各NALユニットは、NALヘッダ90の後続のヘッダの開始時に終了する。] 図6
[0104] 例えば、第1のスライスは、NALヘッダ90Aと、MB番号0〜20に対応する後続の複数のMBとを備えることができ、MB番号20は後続のNALヘッダ90Bの前の最後のMBである。次のスライスは、NALユニットヘッダ90B及びMB番号21で開始する。フレーム88の各々の上部に例示的なMB番号を示す。そのような番号の間隔は、実際のビットストリームのスケール又は比を必ずしも反映するわけではなく、例示のために与えられる。上述のように「スライス」を含んでいるNALユニットは、独立して復号できる。言い換えれば、スライスは、他のNALユニットからの情報なしに復号できる。このようにして、各NALユニットは復号可能MBの自蔵式シーケンスであるので、NALユニットの損失は、所与のフレームに対する先行する又は後続のNALユニットの復号を必ずしも妨げるわけではない。]
[0105] 前述のように、一部のビデオデコーダ、特にソフトウェアモジュールとして実装されたビデオデコーダは、ルックアヘッドエラー処理技法を実行することによって復号エラーを処理することができる。カレントスライスを復号するために、ルックアヘッド技法は一般に、第1のスライスの最後のブロック又はMBを決定するために、次の利用可能なスライスヘッダ、例えばNALヘッダを復号するためのビデオデコーダを必要とする。即ち、ビデオデコーダは、次のスライスヘッダに対してルックアヘッドを行い、現在復号されているスライスの範囲を決定することができる。カレントスライスを復号している間に復号エラーが検出された場合、隠蔽すべき一部の符号化ビデオデータを識別するために、ビデオデコーダは、カレントスライスを復号するより前に、カレントスライスの最後のMBを更に識別することができる。ビデオデコーダは、符号化ビデオデータのスライスごとにこのルックアヘッド動作を実行することができるが、それは、非効率、即ち計算の複雑さ及び過大な電力消費を生じることがある。]
[0106] ルックアヘッドエラー処理技法を採用するビデオデコーダは、非連続復号を実行するものとして特徴づけられる。一例として、従来のビデオデコーダは、最初にカレントスライスの開始MBを決定し、次いで、次の再同期コードワードを検出するためにビットストリーム中でルックアヘッドを行い、それによって、カレントスライス中の最後のMBを決定する。特に、再同期コードワードは、次に適切に受信したスライスを識別するために使用される。ルックアヘッドを行った後、次いで、デコーダは、カレントスライスのバッファバージョンを復号することに戻る。次のスライスのための最初のMB番号Nを決定することによって、ビデオデコーダは、前のスライス中の最後のMB番号、即ちMB N−1を決定することができる。最後のMB番号を識別すると、ビデオデコーダは、カレントビデオスライスの開始MBに戻り、スライスを復号し始める。]
[0107] 従って、ルックアヘッドエラー処理技法の実装は、カレントスライス及び次のスライスをバッファするための2つの異なる復号バッファを必要とする。ビデオデコーダは、元のビデオデータを適切に再構成するために、各バッファ間で交互に切り替える。ビデオデコーダは、1つのスライスの現在の状態情報のすべてを記憶し、次のスライスに移動し、次いで第1のスライスに戻る必要があるので、この技法の非連続的な性質により、実装がより錯綜又は複雑化することがある。特に全体的な復号タスクが2つ以上のプロセッサ間で分割されたとき、この動作は組込みシステムでは望ましくないことがある。]
[0108] 図6の例を参照しながら、ルックアヘッド動作に基づくエラー処理プロセスについて最初に説明する。この例では、フレーム88Aは、MB0からMB20にわたる第1のスライスと、MB21からMB54にわたる第2のスライスと、MB55からMB71にわたる第3のスライスと、MB72からMB98にわたる第4のスライスとを含む。カレントスライスを復号するために、ビデオデコーダは、最初にルックアヘッドを行い、最初の利用可能な再同期ポイントを発見する。MB15〜MB45が損失、又は破損していると仮定した場合、ビデオデコーダは、NALヘッダ90Cにおいて次の再同期ポイントを発見する。その間に、ビデオデコーダは、復号エラーについての実際の知識を有しないが、復号エラーがあった場合、再同期ポイントより前の最後のMBを得ることができるように、ルックアヘッド動作を通して次の再同期ポイントを得る必要がある。] 図6
[0109] 従って、ルックアヘッド動作に依拠するエラー処理プロセスでは、ビデオデコーダは、復号すべきカレントスライスの最初のMB番号を得て、次のスライスヘッダを復号してそのスライスヘッダより前の最後のMB番号を得るために、ルックアヘッドを行い、復号すべきカレントスライスの開始に戻り、復号及びエラーの検出を再開し、最初のMBと最後のMBとをエラー隠蔽動作にパスし、復号すべき次のスライスに対して復号同期及びエラー隠蔽を回復する。特に、ビデオデコーダは、ルックアヘッド動作を実行している間、スライス1及び2(MB0〜54)をバッファし、次いで、復号動作を開始するために、スライス1に戻る必要がある。一般に、ビデオデコーダは、実際の復号エラーが存在するか否かにかかわらず、ビットストリーム中で復号すべき全てのスライスに対してこれらのルックアヘッド動作及びバッファ動作を実行する。スライスの実際の復号は、ルックアヘッド動作の後までも行われない。]
[0110] チャネル16を介した符号化ビデオデータの送信はしばしば、符号化ビデオデータの顕著な損失又は破損なしに行われる。例えば、例示のために、符号化ビデオデータが複数のパケットとしてチャネル16上で送信されると仮定すると、典型的なワイヤレスチャネル16のパケット損失レートはしばしば、5%よりも小さい。例示のために、各パケットが1つのスライスに対応すると仮定すると、有効な符号化ビデオデータの復号中に復号エラーが発生しないことになるので、ルックアヘッドエラー処理技法のための計算の95%が必要とされないことになる。従って、ルックアヘッドエラー処理技法は、多数の浪費される動作を生じることになる。]
[0111] エラー処理をソフトウェアで実装したときは、これらの浪費される動作及び上述の他の問題はあまり重要ではないが、特に全体的な復号タスクを2つ以上のプロセッサに分割したときは、組込みシステムがこれらの問題によって大きな影響を受けることがある。特に、ルックアヘッド技法の組込み実装形態、又はより一般的にルックアヘッド技法のハードウェア実装形態では、浪費される動作は、より多くの有益な動作に使用できる電力を不必要に消費することがある。その上、電力消費は、宛先装置14と同様のモバイル宛先装置に共通のバッテリを消耗させるので、無駄な電力消費により、バッテリが再充電を必要とする前の動作可能な時間が短くなることがある。更に、2つのプロセッサがこれらの電力問題を悪化させることがある。更に、次のスライスをバッファするために使用される追加のバッファは、電力を消耗し、従来のビデオデコーダのコスト及びサイズを更に増大させることがある。]
[0112] 図2のビデオデコーダ26など、ビデオデコーダは、フレーム88を受信し、本開示で説明する技法に従って連続エラー処理動作、即ち、非ルックアヘッドエラー処理動作を実行することができる。連続エラー処理プロセスの場合、各スライスの復号順序は順序正しく維持できる。1つのスライスを事前にバッファし、次いで、次のスライスのNALヘッダにアクセスするためにルックアヘッド動作を実行する必要はない。復号エンジン32は、フレーム88Aの第1のNALユニット又はスライス、例えば、NALヘッダ90A及びMB0〜20にアクセスし、最初のMB番号、例えば、MB0を決定することによって、カレントスライスの開始を決定することができる。復号エンジン32は、このMB番号0を、図3のエラー検出モジュール40など、エラー処理モジュール34のエラー検出モジュールに転送することができる。上述のように、エラーフラグ46を事前にリセットした後、エラー検出モジュール40は、MB番号0をエラーマッピングモジュール42に転送し、エラーマッピングモジュール42は、MB番号0をマッピング48の開始MB48Aに記憶する。] 図2 図3
[0113] 一方、復号エンジン32は、符号化MB0〜20を復号し、この復号ビデオデータ又は復号MBを再構成バッファ38に記憶する。復号エンジン32はまた、復号MB0〜20をエラー検出モジュール40に転送し、エラー検出モジュール40は、エラー検査の適用によって復号エラーが発生したかどうかを決定することができる。例えば、エラー検出モジュール40は、それぞれシンタックスルール44A及びセマンティックルール44Bに従って、シンタックスエラー検査及びセマンティックエラー検査を実行し、並びにエントロピールール44Cに従ってエントロピー符号化検査を実行することができる。]
[0114] 図6の例では、MB0〜20の少なくともいくつか、NALヘッダ90B、及びMB21〜54のいくつかは、損失又は破損している。エラー検出モジュール40は、この復号エラーを検出し、エラーを示すためにエラーフラグ46を設定する。フラグ46を設定することによって、エラー検出モジュール40は、次の識別可能なスライスヘッダ、例えば、NALヘッダ90Cが復号されるまで、エラー隠蔽を遅延させることができる。従って、ビデオデコーダ26は、カレントスライスを復号するより前に最後のMB番号を決定するためにルックアヘッドを行う必要はないが、前のスライスがエラーであることを示すために、フラグ46を維持する。このようにして、ビデオデコーダ26は、データがエラーを含んでいないという仮定に基づいて符号化ビデオデータのカレントスライス又はセグメントを復号する。しかしながら、エラーを決定すると、後で、例えば、次のスライスヘッダが復号された後に、エラー処理モジュール34がエラーを処理することができるように、エラーフラグ46が設定される。] 図6
[0115] 例示のために、エラー検出モジュール40が上述の復号エラーを検出し、エラーフラグ46を設定したと仮定すると、エラー検出モジュール40は復号エンジン32に復号エラーについて通知する。従って、復号エンジン32は、復号を中止し、復号同期を回復し、又は次の識別可能なNALヘッダ、即ち、図6に示す例ではNALヘッダ90Cを探すことによってフレーム88Aの復号を再同期させることができる。復号同期を回復した後、復号エンジン32は、符号化ビデオデータの次の利用可能なスライス、例えば、NALヘッダ90C及びMB番号55〜72によって識別されたNALユニット又はスライスにアクセスする。上述のように、復号エンジン32は、セグメントの開始に対応するMB番号、例えば、MB番号55にアクセスすることによって、符号化ビデオデータのこの次の利用可能なスライスの開始を決定することができる。復号エンジン32は、このMB番号をエラー検出モジュール40に転送する。] 図6
[0116] 第2のセグメントの開始、例えば、MB番号55を受信したことに応答して、エラー検出モジュール40はエラーフラグ46の状態を決定する。エラーフラグ46が設定されていない場合、エラー検出モジュール40はMB番号をエラーマッピングモジュール42にパスし、エラーマッピングモジュール42は、次の利用可能なスライスのカレントスライスとしての復号をサポートするために、MB番号55をマッピング48の開始MB48Aに記憶する。代替的に、エラーフラグ46が設定されている場合、エラー検出モジュール40は、MB番号55−1をエラーマッピングモジュール42にパスし、MB番号54をマッピング48の終了MB48Bとして記憶するようにエラーマッピングモジュール42に命令する。次いで、エラーマッピングモジュール42は、復号エラーの範囲を識別するためにマッピング48をエラー隠蔽モジュール36に転送する。エラー範囲は、スライスヘッダ90A、90Bに関連するスライスを含んでいる破損データセグメントの範囲を規定する。図6の例では、上述のように、エラーマッピングモジュール42は開始MB48Aと終了MB48Bとを転送し、隠蔽エンジン50は、開始MB48Aと終了MB48B(MB0〜MB54)とによって識別されたMBを再構成バッファ38中に隠蔽する。] 図6
[0117] 復号エンジン32は、NALヘッダ90Dによって識別された次の利用可能なスライス又はNALユニットにアクセスすることによって、フレーム88Aを復号し続けることができる。フレーム88Aが復号されると、復号エンジン32はフレーム88Bを更に復号することができる。図6の例ではフレーム88B中に復号エラーが存在しないので、エラー処理モジュール34はエラーを検出せず、エラー隠蔽モジュール36はこれ以上エラーを隠蔽しない。このようにして、ビデオデコーダ26は各スライスを順に復号することができ、従って、ルックアヘッド動作をサポートするためにカレントスライスをバッファする必要がないので、ビデオデコーダ26はより小さいバッファ32を含むことができる。更に、ビデオデコーダ26は、通常の復号以外の追加の計算がほとんど必要とされないほど電力を消費しない。言い換えれば、連続的にではなく、復号エラーが検出されたときにエラー処理モジュール34が起動され、それによって計算を節約し、電力消費を低減する。] 図6
[0118] 様々な態様では、連続エラー処理技法は、特に2つ以上のプロセッサによって実装されたときに、上述の復号効率を維持し、並びにビデオデコーダ26のアーキテクチャを単純化することができる。即ち、例えば、1つのプロセッサが復号エンジン32を実装し、別のプロセッサがエラー処理モジュール34を実装する。2つのプロセッサ間の通信が、アーキテクチャを複雑にすることがある。これらの通信を制限することによって、本技法は実装の複雑さを低減することができる。エラーが起こったときのみ通信が発生するので、本技法は、プロセッサ間の通信の数を制限し、それによってエラー処理アーキテクチャの複雑さを低減することができる。アーキテクチャに関して、スライスごとの順序で復号が実行されるので、ソフトウェア又はハードウェアは、カレントスライス及び次の利用可能なスライスのために2倍のバッファを維持し、そのようなバッファ間で交互に切り替える必要がない。更に、エラー隠蔽が必要とされる場合、前のスライスのための復号ステータス情報を記憶する必要がない。]
[0119] 図7は、2つ以上のフレームにわたる復号エラーのためのエラー処理及び隠蔽を実行する際の、ビデオデコーダ26などのビデオデコーダの例示的な動作を示すフローチャートである。上述のように、ビデオデコーダ26は、複数の符号化ビデオフレームを備えることができる符号化ビデオフレームデータを受信する(92)。ビデオデコーダ26の復号エンジン32は、フレームのカレントスライスに最初にアクセスするときに、エラー処理モジュール34にカレントスライスの開始MB番号と開始フレーム番号とを決定させる(94)。スライスの開始MB番号は、復号エラーが検出されることがあるセグメントの開始を表す。開始フレーム番号は、カレントスライスが存在するフレームの番号を示す。開始MB番号及び開始フレーム番号は、カレントスライスに関連するNALヘッダ中に含まれ得る1つ以上のシンタックス要素から決定できる。] 図7
[0120] 開始MB番号と開始フレーム番号とを決定すると、復号エンジン32は、カレントスライスを復号し(96)、カレントスライスからの復号MBを、エラー検出のためにエラー処理モジュール34に出力する。エラー処理モジュール34のエラー検出モジュール40は、例えば、シンタックスルール44A、セマンティックルール44B又はエントロピールール44Cに従ってシンタックスエラー検査、セマンティックエラー検査及び/又はエントロピー符号化エラー検査を実行することによって、復号エラーが発生したかどうかを決定する(98)。復号エラーが検出されず(98)、スライスの終了に達していない(100)場合、復号エンジン32はカレントスライスを復号し続ける(96)。復号エラーが検出されない(98)が、カレントスライスの終了に達した(100)場合、カレントスライスは正常に復号された。この場合、復号エンジン32は、次の利用可能なスライスをカレントスライスとして復号することに進む。カレントスライスがビデオシーケンス中の第1のスライスであった場合、次のスライスは第2のスライスである。代替的に、カレントスライスが第1のスライスでなかった場合、次のスライスはビデオシーケンスにおける後のスライスである。後の、次の利用可能なスライスは、カレントスライスと同じフレーム中に存在することも、異なるフレーム中に存在することもある。いずれの場合も、復号エンジン32が次の利用可能なスライスに進むとき、復号エンジン32は、次の利用可能なスライスの開始MB番号と開始フレーム番号とを決定する(103)。]
[0121] 復号エラーが検出された(98)場合、エラー検出エンジン40は復号エンジン32に復号エラーについて通知し、エラーフラグ46を設定する(102)。復号エンジン34は、エラーを通知されたことに応答して、上述のように、次の利用可能な、又は識別可能なスライスに進むことによって、復号を再同期させる。この場合、復号エンジン32は、次の利用可能なスライスの開始MB番号と開始フレーム番号とを決定する(103)。復号エンジン96は、後で説明するように、次の利用可能なスライスをカレントスライスとして復号することに進む(96)。復号エンジン32は、前のスライスが正常に復号されたときに、又は前のスライス中の復号エラーの検出に続く再同期の一部としてのいずれかで、次の利用可能なスライスに到達する(103)。各場合において、エラー処理モジュール34は、エラーフラグが設定されているかどうかを決定する(104)。エラーフラグが設定されている(104)場合、復号エラーの検出(98)の結果として、次の利用可能なスライスがアクセスされた。設定されていない場合、前のスライスの正常な復号及び前のスライスの終了の検出(100)の結果として、次の利用可能なスライスがアクセスされた。]
[0122] エラーフラグが設定されていない(104)場合、復号エンジン32は、次の利用可能なスライスをカレントスライスとして復号することに進む(96)。言い換えれば、復号エンジン32によって得られた次の利用可能なスライスがカレントスライスになり、プロセスが繰り返される。しかしながら、エラーフラグが設定されている(104)場合、エラー処理モジュール34は、隠蔽される必要がある破損データセグメントの範囲を決定する。例えば、エラー検出モジュール40は、次の利用可能なスライスの開始MB番号に基づいて終了MB番号を決定し(106)、次の利用可能なスライスの開始フレーム番号に基づいて終了フレーム番号を決定する(108)。復号エラーが単一のスライスのみに関与する場合、終了MB番号及び終了フレーム番号はカレントスライスの終了MB番号及び終了フレーム番号とすることができる。しかしながら、復号エラーによって複数のスライスが影響を受けた場合、終了MB番号及び終了フレーム番号は、カレントスライスと次の利用可能なスライスとの間に存在し、マルチスライス破損データセグメントの一部を形成する、別の後のスライスに対応する。いずれの場合も、エラーマッピングモジュール42は、次の利用可能なスライスのそれぞれ開始MB番号及び開始フレーム番号に基づいて終了MB番号及び終了フレーム番号を決定することができる。この場合も、終了MB番号は次のスライス−1の開始MB番号とすることができる。次いで、エラー隠蔽モジュール36は、カレントスライスの開始MBから破損データセグメントの終了MBまでのMBを隠蔽することによってエラーを隠蔽する(110)。隠蔽に続き、復号エンジン32は、終了MB及び終了フレームを生成するために使用された、次の利用可能なスライスを、新しいカレントスライスとして復号することに進む(96)。]
[0123] エラーマッピングモジュール42は、終了MB番号及び終了フレーム番号を、終了MB48B及び終了フレーム48Dとしてマッピング48に記憶する。次いで、エラーマッピングモジュール48は、開始MB48A、終了MB48B、開始フレーム48C、及び終了フレーム48Dに基づいてエラー範囲を決定し、この範囲をエラー隠蔽モジュール36の隠蔽エンジン50に転送する。上述のように、隠蔽エンジン40は、様々な隠蔽技法のいずれかに従って、エラー範囲、例えば、開始MB48A及び終了MB48B並びに開始フレーム48C及び終了フレーム48Dに基づいて検出された復号エラーを隠蔽する(110)。動作中、エラーマッピングモジュール48は、開始MB番号及び終了MB番号だけでなくフレーム番号をも考慮に入れることによって、エラー範囲を決定することができる。復号エラーがフレーム境界線を超える場合、終了MB番号は、実際に、隠蔽すべきセグメントの開始MB番号よりも小さくなることがある。フレーム番号を追跡することにより、このタイプの状況においてエラー範囲を適切に解決することが可能になる。]
[0124] 図8は、2つ以上のフレームにわたるエラーを含んでいる例示的なビットストリームへのエラー処理及び隠蔽技法の適用を示す図である。図8は、図6と同様であるが、復号エラーが2つの連続するフレームにわたり、それによりエラーを検出した後の再同期のための次の利用可能なスライスが、カレントスライスと異なるフレームに存在するシナリオを示す。図8に示すように、フレーム番号を追跡することによって、2つのフレームにわたるデータが損失している場合に、連続エラー処理技法を適用することができる。従来のシステムでは、エラーが2つのフレームにわたるとき、2番目のフレームが完全に廃棄されることがある。しかしながら、連続エラー処理技法の場合、デコーダは、スライスヘッダのフレーム番号を検査して、カレントフレームを終える前に新しいフレームが開始しているかどうかを決定することができる。開始している場合は、デコーダは、カレントフレームの残りのMBを隠蔽し、新しいフレームを処理する。第2のフレームの最初の幾つかのMBを次のスライスヘッダまで隠蔽することができる。ただし、第2のフレーム中の残りのMBは保持できる。] 図6 図8
[0125] エラー隠蔽のための第1のフレームのMB73〜98と第2のフレームのMB0〜76とを識別するために、連続エラー処理技法を図8のシナリオに適用することができる。図8は、2つのフレーム116A、116B(「フレーム116」)を含むビットストリーム114を示し、フレーム116Aは、それぞれのスライスを指定する複数のNALヘッダ118A〜118Dを備え、フレーム116Bは、それぞれのスライスを指定する複数のNALヘッダ118E〜118Hを備える。NALヘッダ118Aと118Eとは、それぞれのフレーム116の開始を示すことを表すために、それぞれ影付きで示される。NALヘッダ118A〜118H(「NALヘッダ118」)の各々は、スライスを含むことができるNALユニットの開始を示す。] 図8
[0126] 各NALユニットは、NALヘッダ118の後続のヘッダの開始時に終了する。例えば、第1のNALユニットは、NALヘッダ118Aと、MB番号0〜20に対応するMBを含んでいるスライスとを備えることができ、MB番号20は後続のNALヘッダ118Bの前の最後のMBである。フレーム116の各々の上部にMB番号を示す。スライスを含むことができるNALユニットは、独立して復号できる、即ち、他のNALユニットからの情報なしに復号できる。このようにして、各NALユニットは復号可能MBの自蔵式シーケンスであるので、NALユニットの損失は、先行する又は後続のNALユニットの復号を妨げない。]
[0127] 図2のビデオデコーダ26など、ビデオデコーダは、これらのフレーム116を受信し、本開示で説明する技法に従って非ルックアヘッド連続エラー処理動作を実行することができる。復号エンジン32は、フレーム116Aの第1のNALユニット又はスライス、即ち、NALヘッダ118A及びMB0〜20にアクセスし、最初のMB番号、例えば、MB0、並びにフレーム番号を決定することによって、第1のセグメントの開始を決定することができる。復号エンジン32は、このMB番号0を、図3のエラー処理モジュール40など、エラー処理モジュール34のエラー検出モジュールに転送することができる。エラー検出モジュール40は、MB番号0及びフレーム番号をエラーマッピングモジュール42に転送し、エラーマッピングモジュール42は、MB番号0及びフレーム番号を開始MB番号48A及び開始フレーム番号48Cとしてマッピング48に記憶する。この例では、開始MB番号はMB0であり、開始フレーム番号はフレーム0であるとすることができる。] 図2 図3
[0128] 復号エンジン32は、符号化MB0〜20を復号し、この復号されたビデオデータ(例えば、復号MB)を再構成バッファ38中に記憶する。復号エンジン32はまた、復号MB0〜20をエラー検出モジュール40に与えることができ、エラー検出モジュール40は、エラー検査の適用によって復号エラーが発生したかどうかを決定することができる。エラーが検出されなかった場合、ビデオデコーダ32は、例えば、NALヘッダ118B及びMB番号21〜55によって指示された次のスライスにアクセスし、MB開始番号及びフレーム番号をエラー検出モジュール40にパスし、このスライスを復号する。エラー検出モジュール40はエラーフラグ46からステータスを決定する。この例では、前のスライス(MB0〜20)における復号エラーが検出されなかったので、エラーフラグ46は設定されなかった。エラーマッピングモジュール42は、この第2のスライス(MB21〜54)の開始MB番号及びフレーム番号を受信し、開始MB番号及び開始フレーム番号を開始MB48A及び開始フレーム48Cとしてマッピング48に記憶する。復号エンジン32、エラー検出モジュール40、及びエラーマッピングモジュール42は、このようにして、エラーが検出されるまで、後続のスライスのために動作し続けることができる。]
[0129] 図8の例では、第1のフレーム116Aの最後のスライス(MB73〜98)の一部、フレーム116BのNALヘッダ118E、第2のフレーム116Bの第1のスライス(MB0〜45)のすべて、フレーム116BのNALヘッダ118F、及びフレーム116Bの第2のスライス(MB45〜77)の一部は、損失又は破損している(「損失」)。このエラーより前に、エラー検出モジュール42は、開始MB番号73と第1のフレーム116Aに対応するフレーム番号とを受信することができる。上述のように、エラーマッピングモジュール42は、このMB番号73及びフレーム番号を、開始MB48A及び開始フレーム48Cとしてマッピング48に記憶することができる。復号エンジン32によって復号する過程で、エラー検出モジュール40は、この復号エラーを検出し、エラーフラグ46を設定することができる。エラー検出モジュール40はまた、復号エンジン32にエラーについて通知することができ、その結果、復号エンジン32は、上述の方法で復号同期を回復する。特に、復号エンジン32は、次のNALユニットヘッダを探すことによって、次の利用可能なスライスにアクセスすることができる。] 図8
[0130] 図8の例では、復号エンジン32は、NALヘッダ118G及びMB番号77〜88を有する次の利用可能なNALユニットを識別する。MB77〜88を備えるNALユニットが、ビットストリームを解析することによってNALヘッダを容易に見分けることができる次のNALユニットであるという点で、NALヘッダ118Gは次の利用可能なNALユニットを示す。上述のように、復号エンジン32は、次の利用可能なスライスの開始MB番号、例えば、NALヘッダ118Gによって示されるスライスのMB番号77と、他の符号化ビデオデータに対するこのセグメントの位置、例えば、フレーム番号(1)とを決定することができる。復号エンジン32は、開始MB番号77と、フレーム116Bに対応するフレーム番号(1)とをエラー検出モジュール40に与えることができる。] 図8
[0131] エラー検出モジュール40は、MB番号77と、フレーム116Bに対応するフレーム番号1を受信すると、エラーフラグ46のステータスを決定する。例示のために、エラー検出モジュール40がエラーを以前に検出し、エラーフラグ46が設定されていると仮定すると、エラー検出モジュール40は、MB77〜88を備えるスライスの開始MB番号77に基づいて前のセグメントの終了を決定する。この例では、エラー検出モジュール40は、MB番号77から1を減算してMB番号76を得ることによって、破損データセグメントの終了を計算する。エラー検出モジュール40は、終了MB番号76及びフレーム番号1をエラーマッピングモジュール42に転送し、エラーマッピングモジュール42はこれらの番号を、それぞれ、終了MB48B及び終了フレーム48Dとしてマッピング48に記憶する。記憶されると、エラーマッピングモジュール42は、「エラー範囲」と呼ばれるマッピング48をエラー隠蔽モジュール36に転送する。]
[0132] 隠蔽エンジン50は、開始フレーム48C及び終了フレーム48Dから、復号エラーが2つのフレームにわたり、開始MB48A及び終了MB48Bに基づいて、MBがフレーム116Aの終了及びフレーム116Bの開始から損失していると決定することができる。隠蔽エンジン50はまた、復号エンジン32、エラー検出モジュール40、又はエラーマッピングモジュール42のいずれかから最大フレーム長を受信することができ、この例では98MBとして図8に示す。即ち、最大フレーム長は、フレーム116の1つの最後のMB番号として定義できる。最大フレーム長98MBは、quarter common intermediate format(QCIF)フレームにおけるMBの番号に対応する。隠蔽エンジン50は、フレーム番号の差を計算するために、開始フレーム48Cとして記憶された開始フレーム番号から、終了フレーム48Dとして記憶された終了フレーム番号を減算する。] 図8
[0133] 計算されたフレーム番号差が0、即ち、開始及び終了が同じフレーム番号内にある場合、隠蔽エンジン50は開始MB番号、例えば、MB番号73から、次の利用可能なスライスの開始MB番号の直前の終了MB番号までMBを交換、又は隠蔽することができる。この場合も、隠蔽エンジン50は、再構成バッファ38中のMBを直接隠蔽するか、又は再構成バッファに与えられた復号ビデオMBを隠蔽する際に使用するために、隠蔽されるMBを復号エンジン32に与えることができる。図8を参照すると、計算されたフレーム番号差が1よりも小さい又は1に等しい、即ち、復号エラーがフレーム0(116A)及びフレーム1(116B)の部分にわたる場合、隠蔽エンジン50は、開始MB48Aとして記憶された開始MB番号、例えば、MB番号73に対応するMBを、最大フレーム長、例えば、MB番号98に対応するMBまで、交換又は隠蔽することができる。このようにして、エラーが2つのフレームにわたるとき、エラーを含んだ第1のスライスの開始からフレームの終わりまで第1のフレームの残りが隠蔽される。] 図8
[0134] 以下で説明するように、フレーム差が1よりも大きい場合、隠蔽エンジン50は追加のフレームを挿入し、エラーが発生し第1のフレームと、同じエラーが発生した最後のフレームとの間の中間フレームの各々のためのMB番号0〜98に対応するMBを隠蔽することができる。この場合、開始フレーム番号と終了フレーム番号との間の2以上のフレーム差は、少なくとも1つのフレーム全体が損失したことを示す。フレーム差3は2つのフレーム全体が損失したことを示し、フレーム差4は3つのフレーム全体が損失したことを示し、以下同様に示す。最後のフレームにおいて、隠蔽エンジン50は、MB番号0から終了MB48Bとして記憶されたMB番号、例えば76までに対応するMBを隠蔽することができる。]
[0135] 図8に示すインスタンスでは、復号エラーが、連続するフレーム116A及び116Bにわたるので、隠蔽エンジン50は、差が1に等しいと決定し、開始MB48Aとして記憶されたMB番号、例えば73から最大フレーム長、MB番号98までに対応するMBを隠蔽する。差が2以上ではないので、隠蔽エンジン50は復号エラーが及ぶ最後のフレームに達し、MB番号0から終了MB48Aに記憶されたMB番号、例えば76までに対応するMBを隠蔽する。要約すると、フレーム1のMB73〜98及びMB0〜76が隠蔽される。フレーム差が2よりも大きい又は2に等しい場合、単に損失した参照フレームを廃棄する代わりに、隠蔽エンジン50は、損失したフレームの数に等しい数のフレームを挿入し、それによって、参照フレーム不整合を回避する。従来のビデオデコーダにおいて一般的であるように、なくなったフレームを廃棄しないことによって、本技法は、図9A、図9B及び図9Cに関して以下で説明するように、復号パフォーマンスを改善することができる。] 図8 図9A 図9B 図9C
[0136] 図9A、図9B及び図9Cは、複数参照フレームを可能にするビットストリームに対するエラー処理及び隠蔽技法の適用を示す図である。図9Aは、「I」、「P0」、「P1」、「P2」、「P3」及び「P4」と標示された複数のフレームを含むビットストリーム120を示す。Iフレームは、H.264/MPEG 4 AVCイントラフレームとして知られているフレームを指し、Pフレームは、H.264/MPEG 4 AVCインター予測フレームを指す。一般に、各PフレームがIフレーム中に存在する少なくとも一部のビデオデータを参照するように、Pフレームを符号化することができるという点で、Iフレームは、1つ以上のPフレームのための参照を形成することができる。従って、Iフレームが前又は後続のフレームに依存しないという点で、Iフレームは、インター予測に依拠せず、復号を再同期させるために使用できる。従って、図9には示されていないが、ビデオデコーダ26が、NALヘッダによって識別される次の利用可能なスライスを取り出し、以前に損失又は破損したMBによるエラーを繰り越すことなしにIフレームを復号することができるように、IフレームはNALヘッダの後に来ることができる。更に、Pフレームは他のPフレームを参照することができる。] 図9A 図9B 図9C
[0137] H.264プロセスでは、複数参照フレームを使用することは、符号化効率を改善するための一般的な特徴である。H.264プロセスは、前のフレームのみを参照フレームとして使用することを制限せず、動き補償予測が16個の過去のフレームほど離れた参照フレームに基づくことを可能にする。この特徴は、符号化効率を改善するだけでなく、エラー伝搬を軽減するのを助けることができ、通常、エンコーダにおけるエラー防止ツールとして挙げられる。]
[0138] フレームが完全に損失したとき、デコーダは、損失したフレームがあることを知る必要なしに次のフレームを復号し続けることができる。複雑なエラー隠蔽方法を使用して損失したフレーム全体を推定しない限り、デコーダは一般により良い結果を与えることができないので、前のフレームのみを参照フレームとして使用するとき、この手法は効果的である。ただし、(H.264の場合のように)複数参照フレームを使用するとき、フレーム損失により、正しく受信されたフレームが、予測のために間違ったフレームを参照する可能性が高くなる。1つ以上の損失したフレームによって引き起こされる間違った参照を、本開示では参照フレーム不整合と呼ぶ。]
[0139] 各フレームの上部の矢印は、複数のPフレーム、例えば、P0、P1、P2、P3及びP4、並びにIフレームの間の参照フレーム依存関係を示す。ビットストリーム中のシンタックス要素は、例えば、フレーム番号又はフレーム番号オフセット値に基づいて、受信したPフレームごとに参照フレームを識別する参照フレームインデックス情報を含むことができる。図8Bに示すように、フレームP0及びP1は、インター予測のための参照フレームとしてのIフレームに依存し、フレームP2及びP4は、フレームP1に依存し、フレームP3は、フレームP2に依存する。図1のビデオエンコーダ20など、ビデオエンコーダは、上述のように、ビットストリームを圧縮し、送信効率を改善するために、上記の依存関係によって示された方法で、ビットストリーム120を符号化することができる。] 図1 図8B
[0140] また上述したように、ビットストリーム120が、送信チャネル16を介した受信機24への送信中に損失又は破損し、ビデオデコーダ26は、1つ以上のフレームが損失又は破損しているビットストリーム122を受信することになる場合がある。図9Aに示すように、ビットストリーム122は、Iフレーム、並びにフレームP0、P1及びP4をのみ含む。この例では、フレームP2及びP3が、送信中に損失又は破損した。従って、連続的に受信したフレームP1とP4との間のフレーム番号差は3であり(4−1)、2つのフレーム全体の損失を示す。連続的に受信したフレーム間のフレーム番号差が2の場合、1つのフレーム全体の損失が示される。] 図9A
[0141] 送信中に、単一のフレームが損失することがある。代替的に、複数のフレームが損失することがある。各場合において、参照フレーム不整合は、視覚的品質を劣化させ、エラーの伝搬を許す。複数のフレームが同じパケット内に配置される、ブロードキャストなどの適用例において複数のフレームの損失が起こることがある。従って、パケットが損失すると、複数のフレームが損失する。ビットストリーム124Bのフレームの上部の矢印は、エラー隠蔽が実行されない場合に起こりうる考えられる依存関係を示す。特に、矢印は、フレームP4が、フレームP1の代わりに今度は不適切にIフレームに依存する、変化した依存を示す。]
[0142] 図9Aの例では、適用可能な参照フレームインデックス情報によって示されるように、フレームP4が3つ先行するフレームに依存することが意図されると仮定する。しかしながら、損失したフレームがあると、フレームP4は、フレームP1ではなく、2つの損失したフレームをカウントせず3つ先行するフレーム(即ち、Iフレーム)に依存する。言い換えれば、P4は、依然として3フレーム戻ってポイントするが、当初意図された参照フレームP2及びP3がビットストリームから損失しているとき、Iフレームにポイントする。この参照フレーム不整合は、主に損失したフレームによるものである。復号プロセスはビットストリームにおいて実際に受信したフレームデータに基づいてビデオフレームを生成するにすぎないので、デコーダはフレームP2及びP3の損失に気づいていないことがある。] 図9A
[0143] フレームP1を復号した後、デコーダは、シーケンスにおける次のフレームとしてフレームP4を受け取り、ビットストリーム中の参照フレームインデックス(3フレーム前)に従って、その参照フレームを、P1フレームではなくIフレームとして識別することがある。従って、フレームP2及びP3の損失は、フレームP4の参照フレーム不整合を引き起こす。この参照フレーム不整合は、ビデオ再生中にフレームP4の視覚的品質を劣化させ、場合によっては生じたエラーを後続のビデオフレームに伝搬することがある。]
[0144] 本開示で説明する技法によれば、上述のように復号エラーを識別し、損失したフレームを交換してビットストリーム124を生成するようにビデオデコーダ26を構成することができる。このようにして、1つ以上の介在するフレームが送信中に損失又は破損したとき、ビデオデコーダ26は、2つのフレーム間の間隙を識別及び補償し、それによって、参照フレーム不整合を訂正することができる。動作中、図2の復号エンジン32は、ビットストリーム122を受信し、Iフレームの各セグメントの開始を決定し、それらのセグメントを復号し、復号ビデオデータをエラー処理モジュール32に出力する。図3に示すエラー処理モジュール32のエラー検出モジュール40は、復号エラーが発生したかどうかを決定することに進む。このようにして、エラー検出モジュール40が損失したフレームP2及びP3を検出するまで、復号エンジン32及びエラー処理モジュール34は、フレームP0及びP1を復号し続ける。] 図2 図3
[0145] 上述のように、これらのエラーを検出するより前に、エラー検出モジュール40は、(フレームP2の開始時にエラーが発生したので)セグメントの開始、例えば、MB番号0と、符号化ビデオデータにおけるそのセグメントの相対位置を識別するフレーム番号とを受信することができる。フレーム番号は、例えば、スライスヘッダ中のフレーム番号シンタックス要素にアクセスすることによって、H.264又は同様の実装形態で得られる。連続するフレーム番号の比較は、介在フレームが損失したかどうかを明らかにすることができる。フレーム番号が使用されている場合、ビデオデコーダは単に連続するフレーム番号を追跡し、フレーム参照差を決定することができる。フレーム番号差が1よりも大きい場合、少なくとも1つのフレーム全体がなくなっている。なくなっているフレームの数は、フレーム番号差を一般に追跡しなければならない。]
[0146] 幾つかの例では、フレーム番号が破損された場合、エラー検出モジュール40は、開始フレーム48C又は終了フレーム48Dなど、前に記憶された開始フレーム番号又は終了フレーム番号に1を加算することによって開始フレーム番号を決定する。エラーマッピングモジュール42は、開始MB番号及び開始フレーム番号を、開始MB48A及び開始フレーム48Cとしてマッピング48に記憶する。エラー検出モジュール40は、復号エンジン32にエラーについて通知し、エラーフラグ46を設定する。]
[0147] エラー検出モジュール40は、代替又は追加として、リアルタイムプロトコル(RTP)タイミング情報など、エラーを検出する外部機構を採用することができる。RTPタイミング情報の場合、エラー検出モジュール40は、連続的に受信したフレーム間の時間差を検査し、一定であると仮定されるフレーム間隔によって時間差を分割することによって、いくつのフレームが損失したか直接決定することができる。一定のフレーム間隔は、ブロードキャスト適用例など、幾つかの適用例で見られる。しかしながら、ビデオ電話など、フレーム間隔が通常一定でない適用例の場合、エラーを決定するフレーム番号方法を採用することができる。]
[0148] 復号エンジン32は、次の利用可能なNALヘッダにアクセスすることによって、エラーに応答して復号を再同期させることができる。この例では、復号エンジン32は、フレームP4の第1のNALヘッダにアクセスし、フレームP4のこのセグメントの開始、例えば開始MB番号と、フレームP4に対応するフレーム番号とをエラー検出モジュール40にパスする。エラー検出モジュール40は、エラーフラグ46の状態を決定し、エラーフラグが設定されていることがわかると、受信したMB番号とフレームP4に対応するフレーム番号とに基づいて前のセグメントの終了を決定する。]
[0149] 例えば、復号エンジン32が、フレームP4を復号したときに、開始MB番号が0であり、開始フレーム番号が5であると決定したと仮定すると、エラー検出モジュール40は、(エラー検出モジュール40が最大フレーム長98MBについて通知されたと仮定して)前のフレームの終了MB番号98、及び終了フレーム番号4を計算することができる。エラーマッピングモジュール42は、これらの終了MB番号及び終了フレーム番号を、終了MB48B及び終了フレーム48Dとしてマッピング48に記憶する。従って、エラー検出モジュール40は復号エラーの終了を検出することができず、マッピング48が完全に指定されるまで、エラーマッピングモジュール42はマッピング48を隠蔽エンジン50に転送することができないので、フレームP4のための第1のスライスヘッダが復号されるまで、エラー隠蔽モジュール36はエラーを隠蔽することができない。]
[0150] 次いで、エラーマッピングモジュール42は、マッピング48をエラー隠蔽モジュール36に転送する。エラー隠蔽モジュール36は、マッピング48を評価し、開始フレーム番号、例えば、2から終了フレーム番号4を減算することに基づいて、2つのフレームが損失したと決定することができる。更に、開始MB番号が0であり、終了MB番号が98であることを考えて、エラー隠蔽モジュール36は更に、2つの完全なフレームが損失又は破損したと決定することができる。従って、図9Bを参照すると、2つの損失したフレームの外側のスライスにおいてMB隠蔽を実行することに加えて、隠蔽エンジン50は、例えば、直接、又は、復号エンジン32とともに、2つの完全なフレームをビットストリーム122に挿入して、ビットストリーム124Bを再構成バッファ38中に生成することができる。] 図9B
[0151] 図9Bに示すように、ビットストリーム124Bは、前に損失したフレームの代わりに2つの追加のフレームを含む。フレームP4のビデオデータが受信され、復号された後まで、このフレーム挿入技法は実行されない。これらの追加のフレームは、図9Bのビットストリーム124Bにおいて「P1」として両方とも示されて、隠蔽エンジン50がフレームP1を2回繰り返すことによって2つの損失したフレームを隠蔽し、フレームP4より前にこれらの2つの繰返しフレームを再構成バッファ38に挿入することを表す。損失したフレームP2及びP3の代わりに、繰り返されたP1フレームがある場合、フレームP4は依然として、ビットストリームにおいて3フレーム後のフレームを参照するが、この場合、そのフレームは、Iフレームではなく、より適切に繰り返されたフレームP1である。] 図9B
权利要求:

請求項1
符号化ビデオデータのカレントユニットの開始を決定することと、前記カレントユニットの少なくとも一部分を復号することと、前記カレントユニット中の復号エラーを検出することと、前記符号化ビデオデータの次の利用可能なユニットの開始を決定することと、前記復号エラーが検出された場合、前記次の利用可能なユニットの前記開始に基づいて破損データセグメントの終了を決定することと、前記カレントユニットの前記開始と前記破損データセグメントの前記終了とに基づいて前記破損データセグメントを隠蔽することと、を含む、ビデオ復号方法。
請求項2
前記カレントユニット及び前記次の利用可能なユニットの各々がビデオデータスライスを含む、請求項1に記載の方法。
請求項3
前記破損データセグメントが、前記カレントユニットと符号化ビデオデータの少なくとも1つの追加のユニットとを含む、請求項1に記載の方法。
請求項4
前記カレントユニットが第1のフレームのカレントスライスであり、前記破損データセグメントが、前記カレントスライスと第2のフレームからの符号化ビデオデータの少なくとも1つの追加のスライスとを含む、請求項1に記載の方法。
請求項5
前記復号エラーが検出された場合、前記復号エラーの前記検出を示すためにエラーフラグを設定することと、前記エラーフラグが設定されているとき、前記次の利用可能なユニットの前記開始に基づいて前記破損データセグメントの前記終了を決定することとを更に備える、請求項1に記載の方法。
請求項6
前記次の利用可能なユニットが少なくとも1つのスライスを備え、前記方法は、前記復号エラーが検出されたとき、前記スライスに関連するスライスヘッダを探すことを更に備える、請求項5に記載の方法。
請求項7
前記復号エラーが検出された場合、前記カレントユニットの復号を止めることと、前記次の利用可能なユニットを復号することに進むこととを更に含む、請求項5に記載の方法。
請求項8
前記復号エラーが検出されなかった場合、第1のユニット全体を復号することを更に含む、請求項1に記載の方法。
請求項9
前記復号エラーが、シンタックスエラー、セマンティックエラー、又はエントロピー符号化エラーの少なくとも1つを含む、請求項1に記載の方法。
請求項10
前記カレントユニットの開始を決定することが、前記カレントユニットの前記開始に関連する第1のマクロブロック(MB)番号を決定することを含み、前記破損データセグメントの終了を決定することが、前記第2のユニットの開始より前に第2のMB番号を決定することを含み、隠蔽することが、前記第1のMB番号から前記第2のMB番号までの前記破損データセグメントを隠蔽することを含む、請求項1に記載の方法。
請求項11
前記第2のユニットの開始を決定することが、前記第2のユニットの前記開始に関連する第3のMB番号を決定することを備え、前記第2のMB番号を決定することが、前記第2のMB番号を生成するために、前記第3のMB番号から1を減算することを備える、請求項10に記載の方法。
請求項12
前記第1のユニットの開始を決定することが、前記第1のユニットの前記開始に関連する第1のマクロブロック(MB)番号と第1のフレーム番号とを決定することを備え、前記破損データセグメントの終了を決定することが、前記破損データセグメントの前記終了に関連する第2のMB番号と第2のフレーム番号とを決定することを備え、隠蔽することが、前記第1のMB番号及び前記第2のMB番号と前記第1のフレーム番号及び前記第2のフレーム番号とに基づいて前記破損データセグメントの少なくとも一部分を隠蔽することを備え、前記第1のフレーム番号と前記第2のフレーム番号とが、同じことも、異なることもある、請求項10に記載の方法。
請求項13
1つ以上のフレームの損失を検出することと、別のフレームの参照フレーム不整合を隠蔽するために前記1つ以上の損失したフレームを交換することとを更に含む、請求項1に記載の方法。
請求項14
符号化ビデオデータのカレントユニットの開始を決定するための手段と、前記カレントユニットの少なくとも一部分を復号するための手段と、前記カレントユニット中の復号エラーを検出するための手段と、前記符号化ビデオデータの次の利用可能なユニットの開始を決定するための手段と、前記復号エラーが検出された場合、前記次の利用可能なユニットの前記開始に基づいて破損データセグメントの終了を決定するための手段と、前記カレントユニットの前記開始と前記破損データセグメントの前記終了とに基づいて前記破損データセグメントを隠蔽するための手段と、を備える、ビデオ復号装置。
請求項15
前記カレントユニット及び前記次の利用可能なユニットの各々がビデオデータスライスを含む、請求項14に記載の装置。
請求項16
前記破損データセグメントが、前記カレントユニットと符号化ビデオデータの少なくとも1つの追加のユニットとを含む、請求項14に記載の装置。
請求項17
前記カレントユニットが、第1のフレームのカレントスライスであり、前記破損データセグメントが、前記カレントスライスと第2のフレームからの符号化ビデオデータの少なくとも1つの追加のスライスとを含む、請求項14に記載の装置。
請求項18
前記復号エラーが検出された場合、前記復号エラーの前記検出を示すためにエラーフラグを設定するための手段と、前記エラーフラグが設定されているとき、前記次の利用可能なユニットの前記開始に基づいて前記破損データセグメントの前記終了を決定するための手段とを更に備える、請求項14に記載の装置。
請求項19
前記次の利用可能なユニットが少なくとも1つのスライスを備え、前記装置は、前記復号エラーが検出されたとき、前記スライスに関連するスライスヘッダを探すための手段を更に備える、請求項18に記載の装置。
請求項20
前記復号エラーが検出された場合、前記カレントユニットの復号を止めるための手段と、前記次の利用可能なユニットを復号することに進むための手段とを更に備える、請求項18に記載の装置。
請求項21
前記復号エラーが検出されなかった場合、第1のユニット全体を復号するための手段を更に備える、請求項14に記載の装置。
請求項22
前記復号エラーが、シンタックスエラー、セマンティックエラー、又はエントロピー符号化エラーの少なくとも1つを備える、請求項14に記載の装置。
請求項23
前記カレントユニットの開始を決定するための前記手段が、前記カレントユニットの前記開始に関連する第1のマクロブロック(MB)番号を決定するための手段を備え、前記破損データセグメントの終了を決定するための前記手段が、前記第2のユニットの開始より前に第2のMB番号を決定するための手段を備え、隠蔽するための前記手段が、前記第1のMB番号から前記第2のMB番号までの前記破損データセグメントを隠蔽するための手段を備える、請求項14に記載の装置。
請求項24
前記第2のユニットの開始を決定するための前記手段が、前記第2のユニットの前記開始に関連する第3のMB番号を決定するための手段を備え、前記第2のMB番号を決定するための前記手段が、前記第2のMB番号を生成するために、前記第3のMB番号から1を減算するための手段を備える、請求項23に記載の装置。
請求項25
前記第1のユニットの開始を決定するための前記手段が、前記第1のユニットの前記開始に関連する第1のマクロブロック(MB)番号と第1のフレーム番号とを決定するための手段を備え、前記破損データセグメントの終了を決定するための前記手段が、前記破損データセグメントの前記終了に関連する第2のMB番号と第2のフレーム番号とを決定するための手段を備え、隠蔽するための前記手段が、前記第1のMB番号及び前記第2のMB番号と前記第1のフレーム番号及び前記第2のフレーム番号とに基づいて前記破損データセグメントの少なくとも一部分を隠蔽するための手段を備え、前記第1のフレーム番号と前記第2のフレーム番号とが、同じことも、異なることもある、請求項23に記載の装置。
請求項26
1つ以上のフレームの損失を検出するための手段と、別のフレームの参照フレーム不整合を隠蔽するために前記1つ以上の損失したフレームを交換するための手段とを更に備える、請求項14に記載の装置。
請求項27
符号化ビデオデータのカレントユニットの少なくとも一部分を復号する復号エンジンと、カレントユニット中の復号エラーを検出するエラー検出モジュールと、前記カレントユニットの開始を決定し、前記符号化ビデオデータの次の利用可能なユニットの開始を決定し、前記復号エラーが検出された場合、前記次の利用可能なユニットの前記開始に基づいて破損データセグメントの終了を決定するエラーマッピングモジュールと、前記カレントユニットの前記開始と前記破損データセグメントの前記終了とに基づいて前記破損データセグメントを隠蔽するエラー隠蔽モジュールとを備える、ビデオ復号装置。
請求項28
前記カレントユニット及び前記次の利用可能なユニットの各々がビデオデータスライスを含む、請求項27に記載の装置。
請求項29
前記破損データセグメントが、前記カレントユニットと符号化ビデオデータの少なくとも1つの追加のユニットとを含む、請求項27に記載の装置。
請求項30
前記カレントユニットが、第1のフレームのカレントスライスであり、前記破損データセグメントが、前記カレントスライスと第2のフレームからの符号化ビデオデータの少なくとも1つの追加のスライスとを含む、請求項27に記載の装置。
請求項31
前記エラー検出モジュールが、前記復号エラーの前記検出を示すためにエラーフラグを設定し、前記エラーマッピングモジュールは、前記エラーフラグが設定されているとき、前記次の利用可能なユニットの前記開始に基づいて前記破損データセグメントの前記終了を決定する、請求項27に記載の装置。
請求項32
前記次の利用可能なユニットが少なくとも1つのスライスを備え、前記復号エンジンは、前記復号エラーが検出されたとき、前記スライスに関連するスライスヘッダを探す、請求項31に記載の装置。
請求項33
前記復号エラーが検出された場合、前記復号エンジンは、前記カレントユニットの復号を止め、前記次の利用可能なユニットを復号することに進む、請求項31に記載の装置。
請求項34
前記復号エラーが検出されなかった場合、前記復号エンジンは、第1のユニット全体を復号する、請求項27に記載の装置。
請求項35
前記復号エラーが、シンタックスエラー、セマンティックエラー、又はエントロピー符号化エラーの少なくとも1つを備える、請求項27に記載の装置。
請求項36
前記エラーマッピングモジュールが、前記カレントユニットの前記開始に関連する第1のマクロブロック(MB)番号を決定し、前記第2のユニットの開始より前に第2のMB番号を決定し、前記エラー隠蔽モジュールが、前記第1のMB番号から前記第2のMB番号までの前記破損データセグメントを隠蔽する、請求項27に記載の装置。
請求項37
前記エラーマッピングモジュールが、前記第2のユニットの前記開始に関連する第3のMB番号を決定し、前記第2のMB番号を生成するために、前記第3のMB番号から1を減算することによって前記第2のMB番号を決定する、請求項36に記載の装置。
請求項38
前記エラーマッピングモジュールが、前記第1のユニットの前記開始に関連する第1のマクロブロック(MB)番号と第1のフレーム番号とを決定し、前記破損データセグメントの前記終了に関連する第2のMB番号と第2のフレーム番号とを決定し、前記エラー隠蔽モジュールが、前記第1のMB番号及び前記第2のMB番号と前記第1のフレーム番号及び前記第2のフレーム番号とに基づいて前記破損データセグメントの少なくとも一部分を隠蔽し、前記第1のフレーム番号と前記第2のフレーム番号とが、同じことも、異なることもある、請求項36に記載の装置。
請求項39
前記エラー隠蔽モジュールが、1つ以上のフレームの損失を検出し、別のフレームの参照フレーム不整合を隠蔽するために前記1つ以上の損失したフレームを交換する、請求項27に記載の装置。
請求項40
前記装置がワイヤレス通信装置ハンドセットを備える、請求項27に記載の装置。
請求項41
前記装置が集積回路装置を備える、請求項27に記載の装置。
請求項42
符号化ビデオデータのカレントユニットの開始を決定することと、前記カレントユニットの少なくとも一部分を復号することと、前記カレントユニット中の復号エラーを検出することと、前記符号化ビデオデータの次の利用可能なユニットの開始を決定することと、前記復号エラーが検出された場合、前記次の利用可能なユニットの前記開始に基づいて破損データセグメントの終了を決定することと、前記カレントユニットの前記開始と前記破損データセグメントの前記終了とに基づいて前記破損データセグメントを隠蔽することと、を1つ以上のプロセッサに行わせるための命令を含む、コンピュータ可読媒体。
請求項43
前記カレントユニット及び前記次の利用可能なユニットの各々がビデオデータスライスを含む、請求項42に記載のコンピュータ可読媒体。
請求項44
前記破損データセグメントが、前記カレントユニットと符号化ビデオデータの少なくとも1つの追加のユニットとを含む、請求項42に記載のコンピュータ可読媒体。
請求項45
前記カレントユニットが、第1のフレームのカレントスライスであり、前記破損データセグメントが、前記カレントスライスと第2のフレームからの符号化ビデオデータの少なくとも1つの追加のスライスとを含む、請求項42に記載のコンピュータ可読媒体。
請求項46
前記復号エラーが検出された場合、前記復号エラーの前記検出を示すためにエラーフラグを設定することと、前記エラーフラグが設定されているとき、前記次の利用可能なユニットの前記開始に基づいて前記破損データセグメントの前記終了を決定することとを前記1つ以上のプロセッサに行わせるための命令を更に含む、請求項42に記載のコンピュータ可読媒体。
請求項47
前記次の利用可能なユニットが少なくとも1つのスライスを備え、前記命令は、前記復号エラーが検出されたとき、前記スライスに関連するスライスヘッダを探すことを前記1つ以上のプロセッサに行わせる、請求項46に記載のコンピュータ可読媒体。
請求項48
前記復号エラーが検出された場合、前記カレントユニットの復号を止めることと、前記次の利用可能なユニットを復号することに進むこととを前記1つ以上のプロセッサに行わせるための命令を更に含む、請求項46に記載のコンピュータ可読媒体。
請求項49
前記命令は、前記復号エラーが検出されなかった場合、第1のユニット全体を復号することを前記1つ以上のプロセッサに行わせる、請求項42に記載のコンピュータ可読媒体。
請求項50
前記復号エラーが、シンタックスエラー、セマンティックエラー、又はエントロピー符号化エラーの少なくとも1つを含む、請求項42に記載のコンピュータ可読媒体。
請求項51
前記命令が、前記カレントユニットの前記開始に関連する第1のマクロブロック(MB)番号を決定することと、前記第2のユニットの開始より前に第2のMB番号を決定することと、前記第1のMB番号から前記第2のMB番号までの前記破損データセグメントを隠蔽することとを前記1つ以上のプロセッサに行わせる、請求項42に記載のコンピュータ可読媒体。
請求項52
前記命令が、前記第2のユニットの前記開始に関連する第3のMB番号を決定することと、前記第2のMB番号を生成するために、前記第3のMB番号から1を減算することとを前記1つ以上のプロセッサに行わせる、請求項51に記載のコンピュータ可読媒体。
請求項53
前記命令が、前記第1のユニットの前記開始に関連する第1のマクロブロック(MB)番号と第1のフレーム番号とを決定することと、前記破損データセグメントの前記終了に関連する第2のMB番号と第2のフレーム番号とを決定することと、前記第1のMB番号及び前記第2のMB番号と前記第1のフレーム番号及び前記第2のフレーム番号とに基づいて前記破損データセグメントの少なくとも一部分を隠蔽することとを前記1つ以上のプロセッサに行わせ、前記第1のフレーム番号と前記第2のフレーム番号とが、同じことも、異なることもある、請求項51に記載のコンピュータ可読媒体。
請求項54
前記命令が、1つ以上のフレームの損失を検出することと、別のフレームの参照フレーム不整合を隠蔽するために前記1つ以上の損失したフレームを交換することとを前記1つ以上のプロセッサに行わせる、請求項42に記載のコンピュータ可読媒体。
类似技术:
公开号 | 公开日 | 专利标题
US10063882B2|2018-08-28|Reference picture signaling
US10397592B2|2019-08-27|Method and apparatus for multi-threaded video decoding
US9503739B2|2016-11-22|Encoder-assisted adaptive video frame interpolation
KR101344207B1|2013-12-20|패킷 손실 복구를 개선하기 위한 프레임 캐싱의 이용
US20170324980A1|2017-11-09|Method and apparatus for unified error concealment framework
JP5456106B2|2014-03-26|ビデオ誤り隠蔽法
US9521411B2|2016-12-13|Method and apparatus for encoder assisted-frame rate up conversion | for video compression
EP2704442B1|2018-04-04|Template matching for video coding
US8995527B2|2015-03-31|Block type signalling in video coding
JP5108078B2|2012-12-26|Method and apparatus for frame prediction in hybrid video compression enabling temporal scalability
TWI569633B|2017-02-01|補充增強資訊訊息寫碼
US6611530B1|2003-08-26|Video communication using multiple streams
CA2377865C|2009-11-10|Video coding using repeated header data
US8938009B2|2015-01-20|Layered encoded bitstream structure
TWI378729B|2012-12-01|Method and apparatus to construct bi-directional predicted frames for temporal scalability
KR100691307B1|2007-03-12|비디오 에러 은닉을 위한 시스템 및 방법
KR100977490B1|2010-08-23|스트리밍 애플리케이션들에서 미디어 포착을 인에이블하는방법 및 장치
RU2372743C2|2009-11-10|Масштабируемое видеокодирование с двухуровневым кодированием и одноуровневым декодированием
CA2693389C|2014-06-17|Simultaneous processing of media and redundancy streams for mitigating impairments
JP5280003B2|2013-09-04|映像コーデックにおけるスライス層
KR100931873B1|2009-12-15|비디오 신호 부호화/복호화 방법 및 비디오 신호 부호기/복호기
AU2003201069C1|2008-11-06|Coding dynamic filters
DE4305578B4|2007-06-21|Fehlerverdeckung in decodierten Videosignalen
US9338453B2|2016-05-10|Method and device for encoding/decoding video signals using base layer
Yan et al.2009|A hybrid frame concealment algorithm for H. 264/AVC
同族专利:
公开号 | 公开日
TW200943977A|2009-10-16|
US9357233B2|2016-05-31|
US20090213938A1|2009-08-27|
WO2009108614A8|2010-10-14|
KR101443952B1|2014-09-24|
CN101960853B|2016-03-30|
WO2009108614A1|2009-09-03|
JP2018085758A|2018-05-31|
JP2016106476A|2016-06-16|
KR20100126410A|2010-12-01|
JP2014090477A|2014-05-15|
KR101540506B1|2015-07-30|
CN101960853A|2011-01-26|
EP2255536A1|2010-12-01|
KR20130006524A|2013-01-16|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
2012-07-09| A977| Report on retrieval|Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120709 |
2012-08-08| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120807 |
2012-11-07| A601| Written request for extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20121106 |
2012-11-14| A602| Written permission of extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20121113 |
2012-12-08| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121207 |
2013-08-21| A02| Decision of refusal|Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130820 |
2013-12-21| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131220 |
2014-01-08| A911| Transfer to examiner for re-examination before appeal (zenchi)|Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20140107 |
2014-03-10| A912| Re-examination (zenchi) completed and case transferred to appeal board|Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20140307 |
优先权:
申请号 | 申请日 | 专利标题
[返回顶部]